如何在 hbase 中查找行键中的列数(因为一行可以有很多列)
3 回答
I don't think there's a direct way to do that as each row can have a different number of columns and they may be spread over several files.
If you don't want to bring the whole row to the client to perform the count there you can write an endpoint coprocessor (HBase version for a stored procedure if you like) to perform the calculation on the region server side and only return the result. you can read a little about coprocessors here
有一个简单的方法:
使用 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、...)。
感谢@user3375803,实际上您不必使用外部 txt 文件。因为我无法评论你的答案,所以我把我的答案留在下面:
echo "scan 'mytable', {STARTROW=>'mystartrow', ENDROW=>'myendrow'}" | hbase shell | wc -l | awk '{print $1-8}'