我在hive中看到的用于计算统计数据的语法似乎表明标题问题的答案是“不”:
ANALYZE TABLE [TABLENAME] PARTITION(parcol1=…, partcol2=….) COMPUTE STATISTICS
但是,我想把它扔出去,因为我很惊讶总是需要编写一个脚本迭代分区来生成每个分区的语句。我们现在在这张小桌子上有大约一千个分区,它将以数量级增长。
BTW我在没有指定分区的情况下尝试了以下内容:
hive> analyze table metrics compute statistics;
FAILED: SemanticException [Error 10115]: Table is partitioned and partition specification is needed
答案 0 :(得分:7)
是的,你可以。
至少从我正在使用的hive v0.13开始。只需尝试没有特定值(无=…
位)
如果你正在使用FOR COLUMNS,那么你不能因为这个错误:https://issues.apache.org/jira/browse/HIVE-4861
答案 1 :(得分:0)
根据Hive手册,如果没有指定分区规格,则会为整个表格收集统计信息, https://cwiki.apache.org/confluence/display/Hive/StatsDev
When the user issues that command, he may or may not specify the partition specs. If the user doesn't specify any partition specs, statistics are gathered for the table as well as all the partitions (if any).