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