大数据(三十二)HBASE【Hbase JavaAPI访问HBase】
来源:互联网 发布:微信淘宝客开源系统 编辑:程序博客网 时间:2024/05/16 13:58
这里介绍使用java api来访问和操作HBase,例如create、delete、select、update等操作。
1.HBase配置
配置HBase使用的zookeeper集群地址和端口。
private static Configuration configuration;static { configuration = HBaseConfiguration.create(); configuration.set("hbase.zookeeper.property.clientPort", "2181"); configuration.set("hbase.zookeeper.quorum", "ZK1,ZK2,ZK3");}
2.创建表
// 创建表public static boolean create(String tableName, String columnFamily) { HBaseAdmin admin = null; try { admin = new HBaseAdmin(configuration); if (admin.tableExists(tableName)) { System.out.println(tableName + " exists!"); return false; } else { // 逗号分隔,可以有多个columnFamily String[] cfArr = columnFamily.split(","); HColumnDescriptor[] hcDes = new HColumnDescriptor[cfArr.length]; for (int i = 0; i < cfArr.length; i++) { hcDes[i] = new HColumnDescriptor(cfArr[i]); } HTableDescriptor tblDes = new HTableDescriptor(TableName.valueOf(tableName)); for (HColumnDescriptor hc : hcDes) { tblDes.addFamily(hc); } admin.createTable(tblDes); System.out.println(tableName + " create successfully!"); return true; } } catch (IOException e) { e.printStackTrace(); return false; }}
3.插入数据
指定表名、rowkey、cf、qualifier和value,插入数据到HBase。
public static boolean put(String tableName, String rowkey, String columnFamily, String qualifier, String value) { try { HTable table = new HTable(configuration, tableName); Put put = new Put(rowkey.getBytes()); put.add(columnFamily.getBytes(), qualifier.getBytes(), value.getBytes()); table.put(put); System.out.println("put successfully! " + rowkey + "," + columnFamily + "," + qualifier + "," + value); } catch (IOException e) { e.printStackTrace(); return false; } return true;}
4.查询数据
4.1.查询指定rowkey的整条记录,返回Result对象。
// 查询public static Result getResult(String tableName, String rowkey) { System.out.println("get result. table=" + tableName + " rowkey=" + rowkey); try { HTable table = new HTable(configuration, tableName); Get get = new Get(rowkey.getBytes()); return table.get(get); } catch (IOException e) { e.printStackTrace(); return null; }}
4.2.展现Result内容
// Result转换成Map形式,便于输出private static Map<String, Object> result2Map(Result result) { Map<String, Object> ret = new HashMap<String, Object>(); if (result != null && result.listCells() != null) { for (Cell cell : result.listCells()) { String key = Bytes.toString(CellUtil.cloneQualifier(cell)); String value = Bytes.toString(CellUtil.cloneValue(cell)); System.out.println(key + " => " + value); ret.put(key, value); } } return ret;}
4.3.指定qualifier查询数据
// 查询public static byte[] get(String tableName, String rowkey, String qualifier) { System.out.println("get result. table=" + tableName + " rowkey=" + rowkey + " qualifier=" + qualifier); Result result = getResult(tableName, rowkey); if (result != null && result.listCells() != null) { for (Cell cell : result.listCells()) { String key = Bytes.toString(CellUtil.cloneQualifier(cell)); if (key.equals(qualifier)) { String value = Bytes.toString(CellUtil.cloneValue(cell)); System.out.println(key + " => " + value); return CellUtil.cloneValue(cell); } } } return null;}
5.查看全表数据
如下只要指定表名,就可以通过Scan来查看全表数据。
// 查看全表public static List<Map<String, Object>> scan(String tableName) { System.out.println("scan table " + tableName); try { HTable table = new HTable(configuration, tableName); Scan scan = new Scan(); ResultScanner rs = table.getScanner(scan); List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>(); for (Result r : rs) { Map<String, Object> m = result2Map(r); StringBuilder sb = new StringBuilder(); for(String k : m.keySet()) { sb.append(k).append("=>").append(m.get(k)).append(" "); } System.out.println(sb.toString()); resList.add(m); } return resList; } catch (IOException e) { e.printStackTrace(); return null; }}
6.列出HBase中所有表名
// 列出所有表public static List<String> list() { System.out.println("list tables."); try { HBaseAdmin admin = new HBaseAdmin(configuration); TableName[] tableNames = admin.listTableNames(); List<String> tblArr = new ArrayList<String>(); for (int i = 0; i < tableNames.length; i++) { tblArr.add(tableNames[i].getNameAsString()); System.out.println("Table: " + tableNames[i].getNameAsString()); } return tblArr; } catch (IOException e) { e.printStackTrace(); return null; }}
7.删除指定qualifier内容
// 指定qualifier删除内容public static boolean deleteQualifier(String tableName, String rowkey, String columnFamily, String qualifier) { System.out.println("delete qualifier. table=" + tableName + " rowkey=" + rowkey + " cf=" + columnFamily + " qualifier=" + qualifier); try { HBaseAdmin admin = new HBaseAdmin(configuration); if (admin.tableExists(tableName)) { HTable table = new HTable(configuration, tableName); Delete delete = new Delete(rowkey.getBytes()); delete.deleteColumn(columnFamily.getBytes(), qualifier.getBytes()); table.delete(delete); } return true; } catch (IOException e) { e.printStackTrace(); return false; }}
8.删除指定rowkey的记录
// 指定rowkey删除记录public static boolean deleteRow(String tableName, String rowkey) { System.out.println("delete row. table=" + tableName + " rowkey=" + rowkey); try { HBaseAdmin admin = new HBaseAdmin(configuration); if (admin.tableExists(tableName)) { HTable table = new HTable(configuration, tableName); Delete delete = new Delete(rowkey.getBytes()); table.delete(delete); } System.out.println(tableName + ", " + rowkey + " delete successfully!"); return true; } catch (IOException e) { e.printStackTrace(); return false; }}
9.删除指定column family
// 删除columnfamilypublic static boolean deleteColumnFamily(String tableName, String columnFamily) { System.out.println("delete column family. table=" + tableName + " cf=" + columnFamily); try { HBaseAdmin admin = new HBaseAdmin(configuration); if (admin.tableExists(tableName)) { admin.disableTable(tableName); admin.deleteColumn(tableName, columnFamily); admin.enableTable(tableName); } return true; } catch (IOException e) { e.printStackTrace(); return false; }}
10.删除表
删除指定表名。
// 删除表public static boolean delete(String tableName) { System.out.println("delete table " + tableName); try { HBaseAdmin admin = new HBaseAdmin(configuration); if (admin.tableExists(tableName)) { admin.disableTable(tableName); admin.deleteTable(tableName); } return true; } catch (IOException e) { e.printStackTrace(); return false; }}
11.一个测试案例
public class HBaseTest {public static void main(String[] args) { HBaseUtils.create("test1", "cf1,cf2,cf3"); HBaseUtils.put("test1", "row1", "cf1", "field1", "value1"); HBaseUtils.put("test1", "row1", "cf1", "field2", "value2"); HBaseUtils.put("test1", "row1", "cf2", "field3", "value3"); HBaseUtils.put("test1", "row2", "cf1", "field4", "value4"); HBaseUtils.list(); HBaseUtils.get("test1", "row1"); HBaseUtils.get("test1", "row2", "cf1"); HBaseUtils.deleteRow("test1", "row2"); HBaseUtils.scan("test1");// HBaseUtils.delete("test1"); HBaseUtils.list(); }}
阅读全文
0 0
- 大数据(三十二)HBASE【Hbase JavaAPI访问HBase】
- 大数据之Hbase[JavaAPI-CRUD]
- HBase学习(一)hbase安装(单机模式)和javaapi客户端访问hbase例子
- HBase的JavaAPI使用
- Hbase javaapi curd笔记
- Hbase的JavaAPI----HbaseDao
- HBase之JavaAPI
- HBase加载大数据
- hbase加载大数据
- HBase加载大数据
- 大数据(五) - HBase
- 大数据之Hbase
- 大数据(二十七)HBASE【Hbase 综述】
- 大数据(二十八)HBASE【Hbase 体系架构】
- 大数据(三十一)HBASE【Hbase Shell 常用命令】
- 大数据(三十五)HBASE【mapreduce操作hbase】
- 大数据技术-HBase:HBase简介
- 大数据技术-HBase:HBase写入路径
- Java自学笔记之struts访问ServletAPI
- linux下面安装nginx
- [Unity 优化]渲染优化
- http协议
- 电梯算法
- 大数据(三十二)HBASE【Hbase JavaAPI访问HBase】
- 通过 sysprocesses 解决Sql死锁问题
- 自学列式List/Map/Collections
- 模拟实现memmove函数
- 全等和相等详解及面试
- MyBatis的xml处理小于、大于、等于号
- maven
- Qt通过QNetworkAccessManager实现Http get方法文件下载
- SQL详解