是否有一个 Hive 查询来快速查找表大小(即行数),而无需启动耗时的 MapReduce 作业?(这就是为什么我想避免COUNT(*)
。)
我尝试了DESCRIBE EXTENDED
,但产生了numRows=0
这显然是不正确的。
(为 newb 问题道歉。我试过 Google 搜索和搜索 apache.org 文档没有成功。)
tblproperties 将给出表的大小,如果需要,可以用来获取该值。
-- gives all properties
show tblproperties yourTableName
-- show just the raw data size
show tblproperties yourTableName("rawDataSize")
这里是快速命令
ANALYZE TABLE tablename [PARTITION(partcol1[=val1], partcol2[=val2], ...)] COMPUTE STATISTICS [noscan];
例如,如果表已分区
hive> ANALYZE TABLE ops_bc_log PARTITION(day) COMPUTE STATISTICS noscan;
输出是
分区 logdata.ops_bc_log {day = 20140523} 统计信息:[numFiles = 37,numRows = 26095186,totalSize = 654249957,rawDataSize = 58080809507]
分区 logdata.ops_bc_log {day = 20140521} 统计信息:[numFiles = 30,numRows = 21363807,totalSize = 564014889,rawDataSize = 47556570705]
分区 logdata.ops_bc_log {day = 20140524} 统计信息:[numFiles = 35,numRows = 25210367,totalSize = 631424507,rawDataSize = 56083164109]
分区 logdata.ops_bc_log {day = 20140522} 统计信息:[numFiles = 37,numRows = 26295075,totalSize = 657113440,rawDataSize = 58496087068]
如何使用:
hdfs dfs -du -s -h /path/to/table/name
解决方案,虽然不是快速的
如果表是分区的,我们可以计算分区的数量和每个分区中的计数(行数)。
例如:,如果按日期分区(mm-dd-yyyy)
select partition_date, count(*) from <table_name> where <partion_column_name> >= '05-14-2018' group by <partion_column_name>
本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处
评论列表(16条)