我想构建 HBase 表的行键空间的随机样本。
比如说,我希望 HBase 中大约 1% 的键随机分布在整个表中。这样做的最佳方法是什么?
我想我可以编写一个 MapReduce 作业来处理所有数据并提取 1/100 的键......或者也许使用协处理器。
您可以使用RandomRowFilter来获取样本。
我最终在 Pig 中这样做了,但无论出于何种原因,它都非常缓慢。我得到了我需要的数据,所以我没有走得更远,但我可能应该尝试亚历山大的回答。
data = LOAD 'hbase://MARS1'
USING org.apache.pig.backend.hadoop.hbase.HBaseStorage(
'A:*', '-loadKey true')
AS (id:bytearray, A_map:map[]);
justkeys = FOREACH data GENERATE id;
-- rough estimate of number of keys in hbase table
smp = SAMPLE justkeys 0.000001;
STORE smp INTO 'key_sample' USING PigStorage('\t');