开发者社区 问答 正文

Hbase 统计表行数的3种方式

转载自:http://www.hbase.group/article/41

有些时候需要我们去统计某一个hbase表的行数,由于hbase本身不支持SQL语言,只能通过其他方式实现。可以通过一下几种方式实现hbase表的行数统计工作:

1.count命令

最直接的方式是在hbase shell中执行count的命令可以统计行数。 hbase> count ‘t1′ hbase> count ‘t1′, INTERVAL => 100000 hbase> count ‘t1′, CACHE => 1000 hbase> count ‘t1′, INTERVAL => 10, CACHE => 1000

其中,INTERVAL为统计的行数间隔,默认为1000,CACHE为统计的数据缓存。这种方式效率很低,如果表行数很大的话不建议采用这种方式。 2. 调用Mapreduce


$HBASE_HOME/bin/hbase org.apache.hadoop.hbase.mapreduce.RowCounter 'tablename'

这种方式效率比上一种要高很多,调用的hbase jar中自带的统计行数的类。 3.hive over hbase 如果已经见了hive和hbase的关联表的话,可以直接在hive中执行sql语句统计hbase表的行数。 hive over hbase 表的建表语句为: image.png

展开
收起
pandacats 2019-12-20 21:16:20 2090 分享 版权
阿里云 AI 助理回答

在Hive中创建与HBase关联的表时,通常会使用Hive的HBase存储处理器(HBaseStorageHandler),这样可以直接通过Hive SQL查询HBase中的数据。建表语句示例如下:

CREATE TABLE hbase_table_hive (
  row_key string,
  column1 string,
  column2 string
) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES (
  "hbase.columns.mapping" = ":key,family1:column1,family1:column2"
)
TBLPROPERTIES ("hbase.table.name" = "t1");

在这个例子中: - hbase_table_hive 是你在Hive中创建的表名。 - row_key, column1, column2 分别对应HBase表中的列和列族结构。 - "hbase.columns.mapping" 属性指定了Hive表字段与HBase列族、列的映射关系,其中:key代表Row Key,family1:column1family1:column2分别代表HBase中列族family1下的column1column2列。 - "hbase.table.name" 属性指定了这个Hive表关联的HBase表名,这里是t1

统计行数的Hive SQL命令很简单:

SELECT COUNT(*) FROM hbase_table_hive;

这条命令将直接返回HBase表t1通过Hive访问到的行数。这种方式相比直接使用HBase shell的count命令效率更高,特别是在处理大规模数据集时,因为Hive能够利用MapReduce或Tez等执行框架进行并行计算。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答