虚拟机环境下使用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