hbase api – 按行ID列表获取数据行信息
是否可以通过hbase java API按行ID列表获取hbase数据记录?
例如,我有一个已知的hbase行id列表:
mykey1:myhash1,mykey1:myhash2,mykey1:myhash3,mykey2:myhash5,…
我希望单独调用hbase所有相关的列单元格信息。 我对hbase很新,我不知道这是否支持API。
API伪代码:
GetById(String tableName, List rowIds);
那样的东西?
我可以使用Get(byte[] rowName)
从单行检索信息,但是当我有rowId列表时,我需要多次执行get动作,这会导致建立连接并在每次完成时关闭它。
谢谢
将Get
操作列表传递给批处理调用:
... import org.apache.hadoop.conf.Configuration; 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; ... HTable htable = null; try { htable = new HTable(conf, "mytable"); List queryRowList = new ArrayList (); queryRowList.add(new Get(Bytes.toBytes("mykey1:myhash1"))); queryRowList.add(new Get(Bytes.toBytes("mykey1:myhash2"))); queryRowList.add(new Get(Bytes.toBytes("mykey1:myhash3"))); queryRowList.add(new Get(Bytes.toBytes("mykey2:myhash5"))); Result[] results = htable.get(queryRowList); for (Result r : results) { //do something } } finally { if (htable != null) { htable.close(); } } ...
您可以将MultiAction用作可以批量执行的多个get(或put,delete和combination的组合)的容器。
也就是说,请注意,您可以执行多个get操作,而无需每次都关闭/重新打开连接。