如何在hbase中查找行键内的列数

时间:2012-06-29 10:09:29

标签: hadoop hbase

如何在hbase中查找行键内的列数(因为一行可以包含多列)

3 个答案:

答案 0 :(得分:1)

我认为没有直接的方法可以做到这一点,因为每行可以有不同数量的列,它们可能分布在多个文件中。

如果您不想将整行带到客户端以执行计数,那么您可以编写端点协处理器(如果您愿意,可以使用存储过程的HBase版本)在区域服务器端执行计算,并且仅返回结果。你可以阅读一些关于协处理器here

的内容

答案 1 :(得分:1)

有一种简单的方法:

使用hbase shell扫描表并将输出写入中间文本文件。因为hbase shell输出将一行的每一列拆分成一个新行,所以我们可以只计算文本文件中的行数(减去前6行是hbase shell标准输出和最后2行)。

echo "scan 'mytable', {STARTROW=>'mystartrow', ENDROW=>'myendrow'}" | hbase shell > row.txt
wc -l row.txt

确保选择适当的行键,因为边框不包括在内。

如果您只对特定列(系列)感兴趣,请在上面的hbase shell命令中应用过滤器(例如,FamilyFilter,ColumnRangeFilter,...)。

答案 2 :(得分:0)

感谢@ user3375803,实际上您不必使用外部txt文件。因为我无法评论您的答案,所以我将我的答案留在下面:

echo "scan 'mytable', {STARTROW=>'mystartrow', ENDROW=>'myendrow'}" | hbase shell | wc -l | awk '{print $1-8}'