按键从hbase表中获取值

qltillow  于 2021-06-09  发布在  Hbase
关注(0)|答案(2)|浏览(406)

有一个 HBase 包含数百亿条记录的表,其中一个键是一行40字节。还有数十万把钥匙的清单。我需要用这个键获取所有记录,并返回某个表字段的值。所以,我的目的是把一组键转换成一组值。执行任务(使用任何编程语言和技术)最方便和/或最有效的方法是什么?

s71maibg

s71maibg1#

您可以使用hbase javaapi。类似java的伪代码

conf = HBaseConfiguration.create()
conf.set("hbase.zookeeper.quorum", "ZOOKEEPER_USED_BY_HBASE")
connection = ConnectionFactory.createConnection(conf)
table = connection.getTable("tablename")
gets = new ArrayList<Get>()
for all keys {
    gets.add(new Get(key.toBytes()))
}
table.get(gets)

还有一些建议:
看看getjavadocs,您可以将它配置为只返回您感兴趣的列
如果键共享一些公共前缀,那么使用scan with start/stop row也可以。调用scan.setcaching(5000)使它稍微快一点。

jckbn6z7

jckbn6z72#

我在mongodb上测试mapreduce,看看它从集合中获取键/值对的效率。它只是一个10万条记录的集合,但是一个小的javascript函数能够检索所有国家以及它们在集合中出现的次数。

Map1 = function()
{
    Emit(this.country, 1)
}

    Reduce1 = function(key, vals) {
for(var i=0, sum=0; i < vals.length; i++)
{
    sum += vals[i];
}
return sum;
}

再说一遍,我不知道m/r对数十亿条记录有多有效。

相关问题