Hbase 098.4中使用新API通过Get列表获取多行的列值
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,在Hbase0.98.4中通过Get列表的方式获取Hbase中多行的列值,本来想使用KeyValue类来处理的,结果发现该类的getRow()和getValue()的两个方法已经废弃了,最终使用新AP
千家信息网最后更新 2025年01月20日Hbase 098.4中使用新API通过Get列表获取多行的列值
在Hbase0.98.4中通过Get列表的方式获取Hbase中多行的列值,本来想使用KeyValue类来处理的,结果发现该类的getRow()和getValue()的两个方法已经废弃了,最终使用新API中的Cell接口来实现,如下:
Hbase中测试表中数据如下:
hbase(main):005:0> scan 'testtable'ROW COLUMN+CELL row1 column=cf:col1, timestamp=1414705620904, value=val11 row1 column=cf:col2, timestamp=1414681969095, value=val2 1 row(s) in 0.0150 seconds
Myeclipse中代码如下
package com.apache.hbase.kora.get;import java.io.IOException;import java.util.ArrayList;import java.util.List;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.hbase.Cell;import org.apache.hadoop.hbase.HBaseConfiguration;import org.apache.hadoop.hbase.client.Get;import org.apache.hadoop.hbase.client.HTable;import org.apache.hadoop.hbase.client.Result;import org.apache.hadoop.hbase.util.Bytes;public class GetList { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { Configuration conf = HBaseConfiguration.create(); HTable table = new HTable(conf, "testtable"); // 创建一个list用来存放Get对象 Listgets = new ArrayList (); // 实例化一个Get对象,并将该对象添加到list中 Get get1 = new Get(Bytes.toBytes("row1")); get1.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("col1")); gets.add(get1); // 实例化一个Get对象,并将该对象添加到list中 Get get2 = new Get(Bytes.toBytes("row1")); get2.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("col2")); gets.add(get2); // 将list中的所有Get对象一次性提交到服务端,并返回一个Result数组 Result[] results = table.get(gets); /* * 以下是两种遍历Result数组的方法 * 第一种是通过Result的getRow()和getValue()两个方法实现 * 第二种使用Result类的rawCells()方法返回一个Cell数组 */ System.out.println("First iteration..."); for (Result result : results) { // 取到rowkey,并转化为字符串 String row = Bytes.toString(result.getRow()); System.out.println("Row: " + row + " "); // 如果result实例中中包含指定列,就取出其列值,并转化为字符串 if ( result.containsColumn(Bytes.toBytes("cf"), Bytes.toBytes("col1")) ) { String val = Bytes.toString(result.getValue(Bytes.toBytes("cf"), Bytes.toBytes("col1"))); System.out.println("Value: " + val + " "); } // 如果result实例中中包含指定列,就取出其列值,并转化为字符串 if ( result.containsColumn(Bytes.toBytes("cf"), Bytes.toBytes("col2")) ) { String val = Bytes.toString(result.getValue(Bytes.toBytes("cf"), Bytes.toBytes("col2"))); System.out.println("Value: " + val + " "); } } System.out.println("Second iteration..."); for ( Result result : results ) { // result.rawCells()会返回一个Cell[],这个Cell[]存放的对应列的多个版本值,默认只取最新的版本,遍历其中的每个Cell对象 for( Cell cell : result.rawCells() ) { // 在更早的版本中是使用KeyValue类来实现,但是KeyValue在0.98中已经废弃了,改用Cell // cell.getRowArray() 得到数据的byte数组 // cell.getRowOffset() 得到rowkey在数组中的索引下标 // cell.getRowLength() 得到rowkey的长度 // 将rowkey从数组中截取出来并转化为String类型 String row = Bytes.toString(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength()); // 对列值的处理与rowkey的处理一样 String value = Bytes.toString(cell.getValueArray(), cell.getValueOffset(), cell.getValueLength()); System.out.println("Row: " + row + " "); System.out.println("Value: " + value + " "); } } }}
运行结果
2014-11-05 10:50:19,129 INFO [main] zookeeper.ZooKeeper: Client environment:zookeeper.version=3.4.6-1569965, built on 02/20/2014 09:09 GMT2014-11-05 10:50:19,130 INFO [main] zookeeper.ZooKeeper: Client environment:host.name=MBETUKPOUEDZLGC2014-11-05 10:50:19,130 INFO [main] zookeeper.ZooKeeper: Client environment:java.version=1.7.0_672014-11-05 10:50:19,130 INFO [main] zookeeper.ZooKeeper: Client environment:java.vendor=Oracle Corporation2014-11-05 10:50:19,130 INFO [main] zookeeper.ZooKeeper: Client environment:java.home=C:\Java\jdk1.7.0_67\jre2014-11-05 10:50:19,130 INFO [main] zookeeper.ZooKeeper: Client environment:java.class.path=F:\项目目录\JavaProject\HbasePut\bin;C:\hbase-0.98.4-hadoop2\lib\activation-1.1.jar;C:\hbase-0.98.4-hadoop2\lib\aopalliance-1.0.jar;C:\hbase-0.98.4-hadoop2\lib\asm-3.1.jar;C:\hbase-0.98.4-hadoop2\lib\avro-1.7.4.jar;C:\hbase-0.98.4-hadoop2\lib\commons-beanutils-1.7.0.jar;C:\hbase-0.98.4-hadoop2\lib\commons-beanutils-core-1.8.0.jar;C:\hbase-0.98.4-hadoop2\lib\commons-cli-1.2.jar;C:\hbase-0.98.4-hadoop2\lib\commons-codec-1.7.jar;C:\hbase-0.98.4-hadoop2\lib\commons-collections-3.2.1.jar;C:\hbase-0.98.4-hadoop2\lib\commons-compress-1.4.1.jar;C:\hbase-0.98.4-hadoop2\lib\commons-configuration-1.6.jar;C:\hbase-0.98.4-hadoop2\lib\commons-daemon-1.0.13.jar;C:\hbase-0.98.4-hadoop2\lib\commons-digester-1.8.jar;C:\hbase-0.98.4-hadoop2\lib\commons-el-1.0.jar;C:\hbase-0.98.4-hadoop2\lib\commons-httpclient-3.1.jar;C:\hbase-0.98.4-hadoop2\lib\commons-io-2.4.jar;C:\hbase-0.98.4-hadoop2\lib\commons-lang-2.6.jar;C:\hbase-0.98.4-hadoop2\lib\commons-logging-1.1.1.jar;C:\hbase-0.98.4-hadoop2\lib\commons-math-2.1.jar;C:\hbase-0.98.4-hadoop2\lib\commons-net-3.1.jar;C:\hbase-0.98.4-hadoop2\lib\findbugs-annotations-1.3.9-1.jar;C:\hbase-0.98.4-hadoop2\lib\gmbal-api-only-3.0.0-b023.jar;C:\hbase-0.98.4-hadoop2\lib\grizzly-framework-2.1.2.jar;C:\hbase-0.98.4-hadoop2\lib\grizzly-http-2.1.2.jar;C:\hbase-0.98.4-hadoop2\lib\grizzly-http-server-2.1.2.jar;C:\hbase-0.98.4-hadoop2\lib\grizzly-http-servlet-2.1.2.jar;C:\hbase-0.98.4-hadoop2\lib\grizzly-rcm-2.1.2.jar;C:\hbase-0.98.4-hadoop2\lib\guava-12.0.1.jar;C:\hbase-0.98.4-hadoop2\lib\guice-3.0.jar;C:\hbase-0.98.4-hadoop2\lib\guice-servlet-3.0.jar;C:\hbase-0.98.4-hadoop2\lib\hadoop-annotations-2.2.0.jar;C:\hbase-0.98.4-hadoop2\lib\hadoop-auth-2.2.0.jar;C:\hbase-0.98.4-hadoop2\lib\hadoop-client-2.2.0.jar;C:\hbase-0.98.4-hadoop2\lib\hadoop-common-2.2.0.jar;C:\hbase-0.98.4-hadoop2\lib\hadoop-hdfs-2.2.0.jar;C:\hbase-0.98.4-hadoop2\lib\hadoop-mapreduce-client-app-2.2.0.jar;C:\hbase-0.98.4-hadoop2\lib\hadoop-mapreduce-client-common-2.2.0.jar;C:\hbase-0.98.4-hadoop2\lib\hadoop-mapreduce-client-core-2.2.0.jar;C:\hbase-0.98.4-hadoop2\lib\hadoop-mapreduce-client-jobclient-2.2.0.jar;C:\hbase-0.98.4-hadoop2\lib\hadoop-mapreduce-client-shuffle-2.2.0.jar;C:\hbase-0.98.4-hadoop2\lib\hadoop-yarn-api-2.2.0.jar;C:\hbase-0.98.4-hadoop2\lib\hadoop-yarn-client-2.2.0.jar;C:\hbase-0.98.4-hadoop2\lib\hadoop-yarn-common-2.2.0.jar;C:\hbase-0.98.4-hadoop2\lib\hadoop-yarn-server-common-2.2.0.jar;C:\hbase-0.98.4-hadoop2\lib\hadoop-yarn-server-nodemanager-2.2.0.jar;C:\hbase-0.98.4-hadoop2\lib\hamcrest-core-1.3.jar;C:\hbase-0.98.4-hadoop2\lib\hbase-client-0.98.4-hadoop2.jar;C:\hbase-0.98.4-hadoop2\lib\hbase-common-0.98.4-hadoop2.jar;C:\hbase-0.98.4-hadoop2\lib\hbase-common-0.98.4-hadoop2-tests.jar;C:\hbase-0.98.4-hadoop2\lib\hbase-examples-0.98.4-hadoop2.jar;C:\hbase-0.98.4-hadoop2\lib\hbase-hadoop2-compat-0.98.4-hadoop2.jar;C:\hbase-0.98.4-hadoop2\lib\hbase-hadoop-compat-0.98.4-hadoop2.jar;C:\hbase-0.98.4-hadoop2\lib\hbase-it-0.98.4-hadoop2.jar;C:\hbase-0.98.4-hadoop2\lib\hbase-it-0.98.4-hadoop2-tests.jar;C:\hbase-0.98.4-hadoop2\lib\hbase-prefix-tree-0.98.4-hadoop2.jar;C:\hbase-0.98.4-hadoop2\lib\hbase-protocol-0.98.4-hadoop2.jar;C:\hbase-0.98.4-hadoop2\lib\hbase-server-0.98.4-hadoop2.jar;C:\hbase-0.98.4-hadoop2\lib\hbase-server-0.98.4-hadoop2-tests.jar;C:\hbase-0.98.4-hadoop2\lib\hbase-shell-0.98.4-hadoop2.jar;C:\hbase-0.98.4-hadoop2\lib\hbase-testing-util-0.98.4-hadoop2.jar;C:\hbase-0.98.4-hadoop2\lib\hbase-thrift-0.98.4-hadoop2.jar;C:\hbase-0.98.4-hadoop2\lib\high-scale-lib-1.1.1.jar;C:\hbase-0.98.4-hadoop2\lib\htrace-core-2.04.jar;C:\hbase-0.98.4-hadoop2\lib\httpclient-4.1.3.jar;C:\hbase-0.98.4-hadoop2\lib\httpcore-4.1.3.jar;C:\hbase-0.98.4-hadoop2\lib\jackson-core-asl-1.8.8.jar;C:\hbase-0.98.4-hadoop2\lib\jackson-jaxrs-1.8.8.jar;C:\hbase-0.98.4-hadoop2\lib\jackson-mapper-asl-1.8.8.jar;C:\hbase-0.98.4-hadoop2\lib\jackson-xc-1.8.8.jar;C:\hbase-0.98.4-hadoop2\lib\jamon-runtime-2.3.1.jar;C:\hbase-0.98.4-hadoop2\lib\jasper-compiler-5.5.23.jar;C:\hbase-0.98.4-hadoop2\lib\jasper-runtime-5.5.23.jar;C:\hbase-0.98.4-hadoop2\lib\javax.inject-1.jar;C:\hbase-0.98.4-hadoop2\lib\javax.servlet-3.1.jar;C:\hbase-0.98.4-hadoop2\lib\javax.servlet-api-3.0.1.jar;C:\hbase-0.98.4-hadoop2\lib\jaxb-api-2.2.2.jar;C:\hbase-0.98.4-hadoop2\lib\jaxb-impl-2.2.3-1.jar;C:\hbase-0.98.4-hadoop2\lib\jersey-client-1.9.jar;C:\hbase-0.98.4-hadoop2\lib\jersey-core-1.8.jar;C:\hbase-0.98.4-hadoop2\lib\jersey-grizzly2-1.9.jar;C:\hbase-0.98.4-hadoop2\lib\jersey-guice-1.9.jar;C:\hbase-0.98.4-hadoop2\lib\jersey-json-1.8.jar;C:\hbase-0.98.4-hadoop2\lib\jersey-server-1.8.jar;C:\hbase-0.98.4-hadoop2\lib\jersey-test-framework-core-1.9.jar;C:\hbase-0.98.4-hadoop2\lib\jersey-test-framework-grizzly2-1.9.jar;C:\hbase-0.98.4-hadoop2\lib\jets3t-0.6.1.jar;C:\hbase-0.98.4-hadoop2\lib\jettison-1.3.1.jar;C:\hbase-0.98.4-hadoop2\lib\jetty-6.1.26.jar;C:\hbase-0.98.4-hadoop2\lib\jetty-sslengine-6.1.26.jar;C:\hbase-0.98.4-hadoop2\lib\jetty-util-6.1.26.jar;C:\hbase-0.98.4-hadoop2\lib\jruby-complete-1.6.8.jar;C:\hbase-0.98.4-hadoop2\lib\jsch-0.1.42.jar;C:\hbase-0.98.4-hadoop2\lib\jsp-2.1-6.1.14.jar;C:\hbase-0.98.4-hadoop2\lib\jsp-api-2.1-6.1.14.jar;C:\hbase-0.98.4-hadoop2\lib\jsr305-1.3.9.jar;C:\hbase-0.98.4-hadoop2\lib\junit-4.11.jar;C:\hbase-0.98.4-hadoop2\lib\libthrift-0.9.0.jar;C:\hbase-0.98.4-hadoop2\lib\log4j-1.2.17.jar;C:\hbase-0.98.4-hadoop2\lib\management-api-3.0.0-b012.jar;C:\hbase-0.98.4-hadoop2\lib\metrics-core-2.2.0.jar;C:\hbase-0.98.4-hadoop2\lib\netty-3.6.6.Final.jar;C:\hbase-0.98.4-hadoop2\lib\paranamer-2.3.jar;C:\hbase-0.98.4-hadoop2\lib\protobuf-java-2.5.0.jar;C:\hbase-0.98.4-hadoop2\lib\servlet-api-2.5-6.1.14.jar;C:\hbase-0.98.4-hadoop2\lib\slf4j-api-1.6.4.jar;C:\hbase-0.98.4-hadoop2\lib\slf4j-log4j12-1.6.4.jar;C:\hbase-0.98.4-hadoop2\lib\snappy-java-1.0.4.1.jar;C:\hbase-0.98.4-hadoop2\lib\xmlenc-0.52.jar;C:\hbase-0.98.4-hadoop2\lib\xz-1.0.jar;C:\hbase-0.98.4-hadoop2\lib\zookeeper-3.4.6.jar2014-11-05 10:50:19,131 INFO [main] zookeeper.ZooKeeper: Client environment:java.library.path=C:\Java\jdk1.7.0_67\jre\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Users/Administrator/AppData/Local/Genuitec/Common/binary/com.sun.java.jdk.win32.x86_1.6.0.013/jre/bin/client;C:/Users/Administrator/AppData/Local/Genuitec/Common/binary/com.sun.java.jdk.win32.x86_1.6.0.013/jre/bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;d:\oracle;C:\Program Files\ibm\gsk8\lib64;C:\Program Files (x86)\ibm\gsk8\lib;D:\IBM\SQLLIB\BIN;D:\IBM\SQLLIB\FUNCTION;D:\IBM\SQLLIB\SAMPLES\REPL;C:\Program Files\MIT\Kerberos\bin;C:\strawberry\c\bin;C:\strawberry\perl\bin;C:\Java\jdk1.7.0_67\bin;C:\hadoop-2.4.1\bin;C:\apache-maven-3.2.3\bin;C:\hbase-0.98.4-hadoop2\bin;D:\UltraEdit\;.2014-11-05 10:50:19,131 INFO [main] zookeeper.ZooKeeper: Client environment:java.io.tmpdir=C:\Users\ADMINI~1\AppData\Local\Temp\2014-11-05 10:50:19,131 INFO [main] zookeeper.ZooKeeper: Client environment:java.compiler=2014-11-05 10:50:19,131 INFO [main] zookeeper.ZooKeeper: Client environment:os.name=Windows 72014-11-05 10:50:19,131 INFO [main] zookeeper.ZooKeeper: Client environment:os.arch=amd642014-11-05 10:50:19,131 INFO [main] zookeeper.ZooKeeper: Client environment:os.version=6.12014-11-05 10:50:19,131 INFO [main] zookeeper.ZooKeeper: Client environment:user.name=Administrator2014-11-05 10:50:19,131 INFO [main] zookeeper.ZooKeeper: Client environment:user.home=C:\Users\Administrator2014-11-05 10:50:19,131 INFO [main] zookeeper.ZooKeeper: Client environment:user.dir=F:\项目目录\JavaProject\HbasePut2014-11-05 10:50:19,132 INFO [main] zookeeper.ZooKeeper: Initiating client connection, connectString=hadoop4:2181,hadoop3:2181,hadoop2:2181,hadoop1:2181,hadoop5:2181 sessionTimeout=90000 watcher=hconnection-0x14332f47, quorum=hadoop4:2181,hadoop3:2181,hadoop2:2181,hadoop1:2181,hadoop5:2181, baseZNode=/hbase2014-11-05 10:50:19,174 INFO [main] zookeeper.RecoverableZooKeeper: Process identifier=hconnection-0x14332f47 connecting to ZooKeeper ensemble=hadoop4:2181,hadoop3:2181,hadoop2:2181,hadoop1:2181,hadoop5:21812014-11-05 10:50:19,176 INFO [main-SendThread(hadoop4.updb.com:2181)] zookeeper.ClientCnxn: Opening socket connection to server hadoop4.updb.com/192.168.0.104:2181. Will not attempt to authenticate using SASL (unknown error)2014-11-05 10:50:19,177 INFO [main-SendThread(hadoop4.updb.com:2181)] zookeeper.ClientCnxn: Socket connection established to hadoop4.updb.com/192.168.0.104:2181, initiating session2014-11-05 10:50:19,188 INFO [main-SendThread(hadoop4.updb.com:2181)] zookeeper.ClientCnxn: Session establishment complete on server hadoop4.updb.com/192.168.0.104:2181, sessionid = 0x44960c88a5f0048, negotiated timeout = 400002014-11-05 10:50:20,160 DEBUG [main] client.ClientSmallScanner: Finished with small scan at {ENCODED => 1588230740, NAME => 'hbase:meta,,1', STARTKEY => '', ENDKEY => ''}First iteration...Row: row1 Value: val11 Row: row1 Value: val2 Second iteration...Row: row1 Value: val11 Row: row1 Value: val2
看到数据已经成功的取到了。
对象
数组
实例
方法
字符
字符串
数据
版本
处理
中中
两个
目录
结果
项目
并将
多行
成功
一次性
下标
多个
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
门架服务器属于监控还是收费
仓库管理系统数据库的维护
网络安全与信息化产业创新论坛
法律保护网络安全的手抄报
网络安全性选什么
从事软件开发方面
福州墨菲网络技术有限公司
网络安全心得体会500字1篇
嘉兴职业学院计算机网络技术
大连网络技术研究院
合肥求职软件开发
香港proxy服务器
北京有哪些软件开发培训机构
网络安全内容的特点
壹粒籽软件开发有限公司
fifa15数据库
淮北工程管理软件开发哪家好
杭州软件开发者技术网站
视频云结构化服务器
mt4 服务器 更改
南京专业软件开发价格咨询
网络安全咨讯
核心软硬件安全才有网络安全
网络技术工作总结改进方向
关于小学生网络安全倡议书美篇
专业技术人员 网络安全生态
黑客能够攻击服务器吗
软件开发部门工作规划
服务器和磁盘阵列
做软件开发的年薪40万