用于快速查找表大小(行数)的配置单元查询

f45qwnt8  于 2021-06-03  发布在  Hadoop
关注(0)|答案(6)|浏览(473)

是否有一个配置单元查询可以快速查找表大小(即行数),而无需启动耗时的mapreduce作业(所以我想避免 COUNT(*) .)
我试过了 DESCRIBE EXTENDED ,但结果是 numRows=0 这显然是不正确的。
(为新问题道歉。我试着在google上搜索apache.org文档,但没有成功。)

wixjitnu

wixjitnu1#

使用Parquet格式存储外部/内部表的数据。然后你会得到更快的结果。

nkhmeac6

nkhmeac62#

解决方案,虽然不是很快
如果表是分区的,我们可以计算分区的数量和每个分区中的行数。
例如:,如果按日期划分(mm dd yyy)

select partition_date, count(*) from <table_name> where <partion_column_name> >= '05-14-2018' group by <partion_column_name>
jgovgodb

jgovgodb3#

tblproperty将给出表的大小,如果需要,可以使用它来获取该值。

-- gives all properties
show tblproperties yourTableName

-- show just the raw data size
show tblproperties yourTableName("rawDataSize")
f87krz0w

f87krz0w4#

如何使用:

hdfs dfs -du -s -h /path/to/table/name
jfewjypa

jfewjypa5#

这是个好问题。count()将花费大量时间来查找结果。但不幸的是,count()是唯一的方法。
有一种替代方法(不能说是替代的,但比上述情况更好的延迟):
设置属性
设置hive.exec.mode.local.auto=true;
并运行相同的命令( select count(*) from tbl )它比以前提供更好的延迟。

4zcjmb1e

4zcjmb1e6#

这是快速命令

ANALYZE TABLE tablename [PARTITION(partcol1[=val1], partcol2[=val2], ...)] COMPUTE STATISTICS [noscan];

例如,如果表已分区

hive> ANALYZE TABLE ops_bc_log PARTITION(day) COMPUTE STATISTICS noscan;

输出为
分区logdata.ops\u bc\u log{day=20140523}统计:[numfiles=37,numrows=26095186,totalsize=654249957,rawdatasize=580809507]
分区logdata.ops\u bc\u log{day=20140521}统计:[numfiles=30,numrows=21363807,totalsize=564014889,rawdatasize=47556570705]
分区logdata.ops\u bc\u log{day=20140524}统计:[numfiles=35,numrows=25210367,totalsize=631424507,rawdatasize=56083164109]
分区logdata.ops\u bc\u log{day=20140522}统计:[numfiles=37,numrows=26295075,totalsize=657113440,rawdatasize=58496087068]

相关问题