Hive查询快速查找表大小(行数)

xen*_*yon 29 hadoop hive

是否有Hive查询可以快速查找表大小(即行数)而无需启动耗时的MapReduce作业?(这就是我想避免的原因COUNT(*).)

我试过了DESCRIBE EXTENDED,但那产生了numRows=0显然是不正确的.

(对于newb问题道歉.我尝试使用Google搜索并搜索apache.org文档但没有成功.)

Jar*_*red 35

tblproperties将给出表的大小,并且可以在需要时用于获取该值.

-- gives all properties
show tblproperties yourTableName

-- show just the raw data size
show tblproperties yourTableName("rawDataSize")
Run Code Online (Sandbox Code Playgroud)

  • 显然,给定的命令仅在列可用这些属性时才有效,默认情况下不存在. (2认同)
  • 是的,输出是字节。此外,这仅适用于已在其上运行统计信息的非分区表。 (2认同)

min*_*s23 29

这是快速命令

ANALYZE TABLE tablename [PARTITION(partcol1[=val1], partcol2[=val2], ...)] COMPUTE STATISTICS [noscan];
Run Code Online (Sandbox Code Playgroud)

例如,如果表已分区

 hive> ANALYZE TABLE ops_bc_log PARTITION(day) COMPUTE STATISTICS noscan;
Run Code Online (Sandbox Code Playgroud)

输出是

分区logdata.ops_bc_log {day = 20140523} stats:[numFiles = 37,numRows = 26095186,totalSize = 654249957,rawDataSize = 58080809507]

分区logdata.ops_bc_log {day = 20140521} stats:[numFiles = 30,numRows = 21363807,totalSize = 564014889,rawDataSize = 47556570705]

分区logdata.ops_bc_log {day = 20140524} stats:[numFiles = 35,numRows = 25210367,totalSize = 631424507,rawDataSize = 56083164109]

分区logdata.ops_bc_log {day = 20140522} stats:[numFiles = 37,numRows = 26295075,totalSize = 657113440,rawDataSize = 58496087068]

所用时间:5.252秒


use*_*864 9

如何使用:

    hdfs dfs -du -s -h /path/to/table/name
Run Code Online (Sandbox Code Playgroud)