虚拟机环境下使用java访问hbase进行表操作3

该篇内容是承接2的:

1. public static void deleTable(String myTableString)throws IOException{

2.           //获得当前表格的名字实列

3.  TableName tableName =     TableName.valueOf(myTableString);

4.  if(admin.tableExists(tableName)){

5. //禁用表

6.  admin.disableTable(tableName);

7. //删除表

8.  admin.deleteTable(tableName);

9.  }

10.  else{

11.  System.err.println("tableName not exist");

12.  }

13.  }

14.  public static void addcol(String myTableString,String colString)throws IOException{//添加列族的方法

15. //获得当前表格的名字实列

16.  TableName tableName =  TableName.valueOf(myTableString);

17. //直接根据默认属性实列化一个描述列族信息的对象添加列族

18.  admin.addColumn(tableName,new HColumnDescriptor(colString));

19.  System.err.println("add success");

20.  }

21.  public static void removecol(String mytaString,String colString)throws IOException{

22. //获得当前表格的名字实列

23.  TableName tableName = TableName.valueOf(mytaString);

24. //禁用表

25.  admin.disableTable(tableName);

26. //删除列族

27.  admin.deleteColumn(tableName,Bytes.toBytes(colString));

28. //恢复表 

29.  admin.enableTable(tableName);

30.  System.err.println("delete success");

31.  }

32. //添加数据

33.  public static void insertData(String myTabString,String rowKey,String colFamily,String colString, String value)throws IOException{

34. //返回Table接口的一个子对象

35.  Table table   =  connection.getTable(TableName.valueOf(myTabString));

36. //实列化一个Put对象

37.  Put put = new Put(rowKey.getBytes());

38. //将指定的列族,列限定符,对应的值添加到Put实列中

39.  put.addColumn(colFamily.getBytes(),        colString.getBytes(),value.getBytes());

40. //向表中添加值

41.  table.put(put);

42. //释放所有资源,根据缓冲区数据的变化更新Table

43.  table.close();

44.  }

45. //get方法浏览数据

46.  public static void getData(String myTabString,String rowkey) throws IOException{

47.   //获得当前表格的名字实列,建立表连接

48.  Table table =  connection.getTable(TableName.valueOf(myTabString));

49.             //实列化一个Get对象,描述查询条件

50.  Get get= new Get(Bytes.toBytes(rowkey));

51. //进行实际查询,从指定的行的某些单元格中取出相应的值

52.  Result result= table.get(get);

53.   //get方法一次获取一个逻辑行,里面包括多个键值对即cell,通过循环将逐个键值对输出显示

54.  for(Cell cell:result.rawCells()){

55.  System.out.println(new String(CellUtil.getCellKeyAsString(cell))+":"+new String(CellUtil.cloneFamily(cell))

56.  +":"+new String(CellUtil.cloneQualifier(cell))+":"

57.  +new  String(CellUtil.cloneValue(cell))+":"+cell.getTimestamp());

58.  }

59.  table.close();

60. //释放所有资源,根据缓冲区中的数据变 化更新Table

61.  }

          

62.  public static void ScanData(String myTabString)throws IOException{

63.      //建立连接获得当前表格的名字实列

64.  Table table= connection.getTable(TableName.valueOf(myTabString));

65. //实列化一个Scan对象,描述查询条件

66.  Scan scan= new Scan();

67.   //获得ResultScanner实列,进行实际查询

68.  ResultScanner results =table.getScanner(scan);

69. //二层循环显示每一个键值对的内容

70.  for(Result result:results){

71.  for(Cell cell:result.rawCells()){

72. //显示行键,列族名,列标识符,显示值,显示键值对的时间

73.  System.out.println(new        String(CellUtil.cloneRow(cell))+":"+new  String(CellUtil.cloneFamily(cell))

74.  +":"+new String(CellUtil.cloneQualifier(cell))

75.  +":"+new String(CellUtil.cloneValue(cell))+":"+

76.  cell.getTimestamp());

77.  }

78.  }

79. //关闭连接

80.  table.close();

81.  }

82.  }

在Java中实现后需要在hbase中进行验证

需要环境:

Linux Ubuntu 14.04

jdk-7u75-linux-x64

hbase-1.0.0-cdh5.4.5

hadoop-2.6.0-cdh5.4.5

hadoop-2.6.0-eclipse-cdh5.4.5.jar

eclipse-java-juno-SR2-linux-gtk-x86_64