如何在HBase Shell中随机显示行?

如何在HBase Shell中随机显示行?,hbase,Hbase,我使用limit子句查询HBase以获取一组键和值。这是一个问题 hbase(main):015:0> scan 'sample_table', {FILTER => "KeyOnlyFilter()",TIMESTAMP => 11, LIMIT => 2} 我得到了一些输出。如果我重复相同的查询,我会得到相同的输出。我需要的是每次执行查询时都有不同的输出。在Hive中,每次使用LIMIT子句进行查询时,我们都可以使用rand()获得不同的输出。我想知道HBase中是

我使用limit子句查询HBase以获取一组键和值。这是一个问题

hbase(main):015:0> scan 'sample_table', {FILTER => "KeyOnlyFilter()",TIMESTAMP => 11, LIMIT => 2}

我得到了一些输出。如果我重复相同的查询,我会得到相同的输出。我需要的是每次执行查询时都有不同的输出。在Hive中,每次使用LIMIT子句进行查询时,我们都可以使用
rand()
获得不同的输出。我想知道HBase中是否有类似的功能?

如果您知道行键前缀,请尝试以下功能:

scan 'table1', {ROWPREFIXFILTER => 'xyz'}
如果您同时知道开始键和结束键

scan 'table2', {STARTROW => 'abc', ENDROW => 'xyz'}

您可以使用
RandomRowFilter
。构造函数参数
chance
是一行包含在结果中的概率

由于默认情况下shell使用
ParseFilter
,并且它不支持此筛选器,因此我们将无法使用简单的筛选器字符串,如
“RandomRowFilter(0.10)和PageFilter(10)”
。相反,请使用以下内容:

module B
    include_package 'org.apache.hadoop.hbase.filter'
end
filters=B::FilterList.new
filters.addFilter(B::RandomRowFilter.new(0.10))
filters.addFilter(B::PageFilter.new(10))
scan "some_table",{FILTER=>filters}