1 packageorg.admln.hbase;2
3 importjava.util.ArrayList;4 importjava.util.List;5
6 importorg.apache.hadoop.conf.Configuration;7 importorg.apache.hadoop.hbase.HBaseConfiguration;8 importorg.apache.hadoop.hbase.HColumnDescriptor;9 importorg.apache.hadoop.hbase.HTableDescriptor;10 importorg.apache.hadoop.hbase.KeyValue;11 importorg.apache.hadoop.hbase.TableName;12 importorg.apache.hadoop.hbase.client.Delete;13 importorg.apache.hadoop.hbase.client.Get;14 importorg.apache.hadoop.hbase.client.HBaseAdmin;15 importorg.apache.hadoop.hbase.client.HTable;16 importorg.apache.hadoop.hbase.client.Put;17 importorg.apache.hadoop.hbase.client.Result;18 importorg.apache.hadoop.hbase.client.ResultScanner;19 importorg.apache.hadoop.hbase.client.Scan;20 importorg.apache.hadoop.hbase.util.Bytes;21
22 public classOperateTable {23 //声明静态配置
24 private static Configuration conf = null;25 static{26 conf =HBaseConfiguration.create();27 conf.set("hbase.zookeeper.quorum", "slave1");28 conf.set("hbase.zookeeper.property.clientPort", "2181");29 }30
31 //创建数据库表
32 public static voidcreateTable(String tableName, String[] columnFamilys)33 throwsException {34 //新建一个数据库管理员
35 HBaseAdmin hAdmin = newHBaseAdmin(conf);36
37 if(hAdmin.tableExists(tableName)) {38 System.out.println("表已经存在");39 System.exit(0);40 } else{41 //新建一个 scores 表的描述
42 HTableDescriptor tableDesc = newHTableDescriptor(43 TableName.valueOf(tableName));44 //在描述里添加列族
45 for(String columnFamily : columnFamilys) {46 tableDesc.addFamily(newHColumnDescriptor(columnFamily));47 }48 //根据配置好的描述建表
49 hAdmin.createTable(tableDesc);50 System.out.println("创建表成功");51 }52 }53
54 //删除数据库表
55 public static void deleteTable(String tableName) throwsException {56 //新建一个数据库管理员
57 HBaseAdmin hAdmin = newHBaseAdmin(conf);58
59 if(hAdmin.tableExists(tableName)) {60 //关闭一个表
61 hAdmin.disableTable(tableName);62 //删除一个表
63 hAdmin.deleteTable(tableName);64 System.out.println("删除表成功");65
66 } else{67 System.out.println("删除的表不存在");68 System.exit(0);69 }70 }71
72 //添加一条数据
73 public static voidaddRow(String tableName, String row,74 String columnFamily, String column, String value) throwsException {75 HTable table = newHTable(conf, tableName);76 Put put = newPut(Bytes.toBytes(row));77 //参数出分别:列族、列、值
78 put.add(Bytes.toBytes(columnFamily), Bytes.toBytes(column),79 Bytes.toBytes(value));80 table.put(put);81 }82
83 //删除一条数据
84 public static void delRow(String tableName, String row) throwsException {85 HTable table = newHTable(conf, tableName);86 Delete del = newDelete(Bytes.toBytes(row));87 table.delete(del);88 }89
90 //删除多条数据
91 public static voiddelMultiRows(String tableName, String[] rows)92 throwsException {93 HTable table = newHTable(conf, tableName);94 List list = new ArrayList();95
96 for(String row : rows) {97 Delete del = newDelete(Bytes.toBytes(row));98 list.add(del);99 }100
101 table.delete(list);102 }103
104 //get row
105 public static void getRow(String tableName, String row) throwsException {106 HTable table = newHTable(conf, tableName);107 Get get = newGet(Bytes.toBytes(row));108 Result result =table.get(get);109 //输出结果
110 for(KeyValue rowKV : result.raw()) {111 System.out.print("Row Name: " + new String(rowKV.getRow()) + " ");112 System.out.print("Timestamp: " + rowKV.getTimestamp() + " ");113 System.out.print("column Family: " + newString(rowKV.getFamily())114 + " ");115 System.out.print("Row Name: " + newString(rowKV.getQualifier())116 + " ");117 System.out.println("Value: " + new String(rowKV.getValue()) + " ");118 }119 }120
121 //get all records
122 public static void getAllRows(String tableName) throwsException {123 HTable table = newHTable(conf, tableName);124 Scan scan = newScan();125 ResultScanner results =table.getScanner(scan);126 //输出结果
127 for(Result result : results) {128 for(KeyValue rowKV : result.raw()) {129 System.out.print("Row Name: " + newString(rowKV.getRow())130 + " ");131 System.out.print("Timestamp: " + rowKV.getTimestamp() + " ");132 System.out.print("column Family: "
133 + new String(rowKV.getFamily()) + " ");134 System.out.print("Row Name: "
135 + new String(rowKV.getQualifier()) + " ");136 System.out.println("Value: " + newString(rowKV.getValue())137 + " ");138 }139 }140 }141
142 //main
143 public static voidmain(String[] args) {144 try{145 String tableName = "users2";146
147 //第一步:创建数据库表:“users2”
148 String[] columnFamilys = { "info", "course"};149 OperateTable.createTable(tableName, columnFamilys);150
151 //第二步:向数据表的添加数据152 //添加第一行数据
153 OperateTable.addRow(tableName, "tht", "info", "age", "20");154 OperateTable.addRow(tableName, "tht", "info", "sex", "boy");155 OperateTable.addRow(tableName, "tht", "course", "china", "97");156 OperateTable.addRow(tableName, "tht", "course", "math", "128");157 OperateTable.addRow(tableName, "tht", "course", "english", "85");158 //添加第二行数据
159 OperateTable.addRow(tableName, "xiaoxue", "info", "age", "19");160 OperateTable.addRow(tableName, "xiaoxue", "info", "sex", "boy");161 OperateTable.addRow(tableName, "xiaoxue", "course", "china", "90");162 OperateTable.addRow(tableName, "xiaoxue", "course", "math", "120");163 OperateTable164 .addRow(tableName, "xiaoxue", "course", "english", "90");165 //添加第三行数据
166 OperateTable.addRow(tableName, "qingqing", "info", "age", "18");167 OperateTable.addRow(tableName, "qingqing", "info", "sex", "girl");168 OperateTable169 .addRow(tableName, "qingqing", "course", "china", "100");170 OperateTable.addRow(tableName, "qingqing", "course", "math", "100");171 OperateTable.addRow(tableName, "qingqing", "course", "english",172 "99");173 //第三步:获取一条数据
174 System.out.println("获取一条数据");175 OperateTable.getRow(tableName, "tht");176 //第四步:获取所有数据
177 System.out.println("获取所有数据");178 OperateTable.getAllRows(tableName);179 //第五步:删除一条数据
180 System.out.println("删除一条数据");181 OperateTable.delRow(tableName, "tht");182 OperateTable.getAllRows(tableName);183 //第六步:删除多条数据
184 System.out.println("删除多条数据");185 String[] rows = { "xiaoxue", "qingqing"};186 OperateTable.delMultiRows(tableName, rows);187 OperateTable.getAllRows(tableName);188 //第八步:删除数据库
189 System.out.println("删除数据库");190 OperateTable.deleteTable(tableName);191
192 } catch(Exception err) {193 err.printStackTrace();194 }195 }196 }