有一个 HBase 包含数百亿条记录的表,其中一个键是一行40字节。还有数十万把钥匙的清单。我需要用这个键获取所有记录,并返回某个表字段的值。所以,我的目的是把一组键转换成一组值。执行任务(使用任何编程语言和技术)最方便和/或最有效的方法是什么?
HBase
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)使它稍微快一点。
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对数十亿条记录有多有效。
2条答案
按热度按时间s71maibg1#
您可以使用hbase javaapi。类似java的伪代码
还有一些建议:
看看getjavadocs,您可以将它配置为只返回您感兴趣的列
如果键共享一些公共前缀,那么使用scan with start/stop row也可以。调用scan.setcaching(5000)使它稍微快一点。
jckbn6z72#
我在mongodb上测试mapreduce,看看它从集合中获取键/值对的效率。它只是一个10万条记录的集合,但是一个小的javascript函数能够检索所有国家以及它们在集合中出现的次数。
再说一遍,我不知道m/r对数十亿条记录有多有效。