Hbase葱岭探秘--JavaApi实践
来源:互联网 发布:c语言三角形判断 编辑:程序博客网 时间:2024/06/05 16:21
HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。
HBase是Google Bigtable的开源实现,类似Google Bigtable利用GFS作为其文件存储系统,HBase利用Hadoop HDFS作为其文件存储系统;Google运行MapReduce来处理Bigtable中的海量数据,HBase同样利用Hadoop MapReduce来处理HBase中的海量数据;Google Bigtable利用 Chubby作为协同服务,HBase利用Zookeeper作为对应。
Hbase提供了Java的Api接口,通过JavaApi操作Hbase中数据的CURD等等的相关操作,下面是部分测试的例子,读者可以进行相应的参考。
public static Configuration config = null; static { config = HBaseConfiguration.create(); config.set("hbase.zookeeper.property.clientPort", "2181"); config.set("hbase.zookeeper.quorum", "192.168.154.100"); config.set("hbase.master", "192.168.1.102:600000"); } public static void main(String[] args) throws Exception { testScanChacheMethod(); } public static void testScanChacheMethod() { testScanCache(1, 1); testScanCache(100, 10); testScanCache(20, 10); } /** * Scan */ public static void testScanCache(int caching, int batch) { final int[] counters = {0, 0}; AppenderSkeleton appender = new AppenderSkeleton() { @Override public boolean requiresLayout() { return false; } @Override public void close() {} @Override protected void append(LoggingEvent event) { String ev = event.getMessage().toString(); if(ev != null && ev.contains("Call:next")) { counters[0] ++; } } }; log.removeAllAppenders(); log.setAdditivity(false); log.addAppender(appender); log.setLevel(Level.INFO); try { HTable table = new HTable(config, "testtable"); Scan scan = new Scan(); scan.setCaching(caching); scan.setBatch(batch); ResultScanner result = table.getScanner(scan); for (Result res : result) { log.info(res); } System.out.println(">>>>>>Caching :" + caching + ", Batch :" + batch + " , Results :" + result + ", RPCs:" + counters[0]); log.info(">>>>>>Caching :" + caching + ", Batch :" + batch + " , Results :" + result + ", RPCs:" + counters[0]); table.close(); } catch (IOException e) { log.error(e); } } /** * 扫描 */ public static void testScan() { try { HTable table = new HTable(config, "testtable"); Scan scan = new Scan(); ResultScanner result = table.getScanner(scan); for (Result res : result) { log.info(res); } Scan scan2 = new Scan(); scan2.addColumn("col1".getBytes(), "name".getBytes()).setStartRow("row2".getBytes()); scan2.addFamily("col1".getBytes()); ResultScanner scanner = table.getScanner(scan2); for (Result res : scanner) { log.info(res); } table.close(); } catch (IOException e) { log.error(e); } } /** * 批处理 */ public static void testBatch() { try { HTable table = new HTable(config, "testtable"); List<Row> batch = new ArrayList<Row>(); Put put = new Put("row1".getBytes()); put.add("col1".getBytes(), "name".getBytes(), "wy".getBytes()); batch.add(put); Get get = new Get("row1".getBytes()); get.addColumn("col1".getBytes(), "name".getBytes()); batch.add(get); Delete delete = new Delete("row1".getBytes()); delete.deleteColumn("col1".getBytes(), "name".getBytes()); batch.add(delete); try { Object[] obj = table.batch(batch); for (int i = 0; i < obj.length; i++) { log.info(obj[i]); } } catch (InterruptedException e) { log.error(e); } table.close(); } catch (IOException e) { log.error(e); } } /** * 删除操作 */ public static void testCompareAndDelete() { try { HTable table = new HTable(config, "testtable"); Delete delete = new Delete("row1".getBytes()); boolean result = table.checkAndDelete("row1".getBytes(), "col1".getBytes(), "name".getBytes(), "x".getBytes(), delete); log.info(result); table.close(); } catch (IOException e) { log.error(e); } } /** * 删除数据 */ public static void testDelete() { try { HTable table = new HTable(config, "testtable"); Delete delete = new Delete("row1".getBytes()); delete.deleteColumn("col1".getBytes(), "name".getBytes()); delete.deleteFamily("col1".getBytes()); table.delete(delete); table.close(); } catch (IOException e) { log.error(e); } } /** * 获取特定的行或者前一行 */ public static void testRowBefore() { try { HTable table = new HTable(config, "testtable"); log.info(table.getRegionLocation("row1")); Result result = table.getRowOrBefore("row1".getBytes(), "col1".getBytes()); byte[] value = result.getValue("col1".getBytes(), "name".getBytes()); log.info(Bytes.toString(value)); table.close(); } catch (IOException e) { log.error(e); } } /** * 批量的get */ public static void testListGet() { try { HTable table = new HTable(config, "testtable"); List<Get> getList = new ArrayList<Get>(); Get get = new Get("row1".getBytes()); get.addColumn("col1".getBytes(), "name".getBytes()); getList.add(get); Get get2 = new Get("row2".getBytes()); get2.addColumn("col1".getBytes(), "name".getBytes()); getList.add(get2); Result[] results = table.get(getList); for (Result result : results) { for (Cell cell : result.rawCells()) { log.info(Bytes.toString(cell.getFamilyArray())+ "<>" + Bytes.toString(cell.getQualifierArray()) + "<>" + Bytes.toString(cell.getRowArray()) + "<>" + cell.getTimestamp() + "<>" + Bytes.toString(cell.getValueArray()) ); } } table.close(); } catch (Exception e) { log.error(e); } } /** * 批量的put */ public static void testListPut() { try { HTable table = new HTable(config, "testtable"); List<Put> putList = new ArrayList<Put>(); Put put = new Put("row1".getBytes()); put.add("col1".getBytes(), "name".getBytes(), "y".getBytes()); putList.add(put); Put put2 = new Put("row1".getBytes()); put2.add("col1".getBytes(), "name".getBytes(), "x".getBytes()); putList.add(put2); table.put(putList); table.close(); } catch (Exception e) { log.error(e); } } /** * 获取数据 */ public static void testGet() { try { HTable table = new HTable(config, "testtable"); Get get = new Get(Bytes.toBytes("row1")); get.addColumn("col1".getBytes(), "name".getBytes()); Result result = table.get(get); log.info(result); // 输出值 byte[] values = result.getValue("col1".getBytes(), "name".getBytes()); log.info(Bytes.toString(values)); table.close(); } catch (IOException e) { log.error(e); } } /** * 向列中添加数据 */ public static void testPut() { Configuration config = HBaseConfiguration.create(); try { HTable table = new HTable(config, "testtable"); Put put = new Put(Bytes.toBytes("row1")); put.add("col1".getBytes(), "name".getBytes(), "x".getBytes()); table.put(put); table.close(); } catch (Exception e) { log.error(e); } }
转载注明出处:Hbase葱岭探秘–JavaApi实践
0 0
- Hbase葱岭探秘--JavaApi实践
- Hbase葱岭探秘--过滤器Api
- Hbase葱岭探秘--Hbase管理功能Api
- Hbase葱岭探秘-原理与架构
- Hbase葱岭探秘--MR导入与分析数据
- HBase的JavaAPI使用
- Hbase javaapi curd笔记
- Hbase的JavaAPI----HbaseDao
- HBase之JavaAPI
- javaApi调用Hbase 单机模式
- spark操作hbase的javaapi
- 利用JavaAPI对HBase操作
- HBase Shell及JavaAPI操作
- Hbase教程(四) Hbase数据库JavaAPI接口
- 大数据(三十二)HBASE【Hbase JavaAPI访问HBase】
- eclipse下使用javaapi连接hbase记录
- eclipse停使用javaapi连接hbase记录
- Hbase调用JavaAPI实现批量导入操作
- 报错:Ambiguous mapping
- 01背包详解
- Java 学习笔记 Day012(续)
- SAP中使用MM01创建物料如何选定行业领域和物料类型
- Bootstrap—使用按钮组
- Hbase葱岭探秘--JavaApi实践
- 广义霍夫变换目标匹配
- 回归算法应用场景实例二十则
- docker命令
- [pku1743]不可重叠最长重复子串
- [LeetCode] 63. Unique Paths II
- 微软等数据结构+算法面试100题全部答案集锦
- VS远程调试连接失败
- JS判断当前浏览器类型