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

Hadoop 用于快速查找表大小(行数)的配置单元查询,hadoop,hive,Hadoop,Hive,是否有配置单元查询可以快速查找表大小(即行数),而无需启动耗时的MapReduce作业?(这就是为什么我想避免计数(*)) 我尝试了description EXTENDED,但结果是numRows=0,这显然是不正确的 (为这个新问题道歉。我试着用谷歌搜索apache.org文档,但没有成功。)这是个好问题。count()将花费大量时间来查找结果。但不幸的是,count()是唯一的方法 有一种替代方法(不能说是替代,但比上述情况更好的延迟): 设置属性 设置hive.exec.mode.loca

是否有配置单元查询可以快速查找表大小(即行数),而无需启动耗时的MapReduce作业?(这就是为什么我想避免计数(*))

我尝试了
description EXTENDED
,但结果是
numRows=0
,这显然是不正确的


(为这个新问题道歉。我试着用谷歌搜索apache.org文档,但没有成功。)

这是个好问题。count()将花费大量时间来查找结果。但不幸的是,count()是唯一的方法

有一种替代方法(不能说是替代,但比上述情况更好的延迟):

设置属性

设置hive.exec.mode.local.auto=true


并运行相同的命令(
从tbl中选择count(*)
),该命令提供比以前更好的延迟

这是快速命令

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}stats:[numFiles=37, numRows=26095186,totalSize=654249957,rawDataSize=580809507]

分区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]


使用拼花格式存储外部/内部表格的数据。然后您将获得更快的结果。

tblproperty将给出表的大小,如果需要,可用于获取该值

-- gives all properties
show tblproperties yourTableName

-- show just the raw data size
show tblproperties yourTableName("rawDataSize")
如何使用:

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

解决方案,尽管不快速
如果表是分区的,我们可以计算每个分区的分区数和行数。
例如:,如果按日期划分(mm dd yyyy)

选择分区日期,计数(*),其中>='05-14-2018'分组依据

确实还有其他方法。请参阅下面的其他答案。注意,“noscan”参数将阻止扫描文件以获得正确的行数。你会得到总尺寸。在您的情况下,它可能会起作用,因为您是通过配置收集统计数据。@DanielLangdon是rawDataSize字节、块或其他单位?bytes@DanielLangdon抱歉,伙计们,不久前我移动了职位和公司,不记得太多细节。显然,给定的命令只在这些属性对列可用时才起作用,默认情况下不在列中。是的,输出为字节。此外,这只适用于运行统计数据的非分区表。请检查此项!!!希望有帮助:)我试过了,上面写着12.8克它代表12.8 GB吗?@Constantine1991是的!
select partition_date, count(*) from <table_name> where <partion_column_name> >= '05-14-2018' group by <partion_column_name>