1. 程式人生 > >虛擬機器環境下使用java訪問hbase進行表操作3

虛擬機器環境下使用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