2012-12-05 28 views
3

我想构建一个HBase表的rowkey空间的随机样本。假设我希望大约有1%的HBase密钥随机分布在表中。这样做的最好方法是什么?抽样HBase表keyspace空间

我想我可以编写一个MapReduce作业来处理所有的数据并且拉出1/100的密钥......或者使用一个协处理器。

回答

3

您可以使用RandomRowFilter来获取样本。

+2

你也可以应用'KeyOnlyFilter',因为只考虑密钥。 –

0

我最终在猪身上做了这件事,但无论出于何种原因,它的速度非常慢。我得到了我需要的数据,所以我没有更进一步,但我应该尝试亚历山大的答案。

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');