1

为了加快对大表的 ETL 查询,我们analyze在晚上对这些表和日期列运行了许多查询。但是这些analyze对列的查询会占用大量内存和时间。我们正在使用 tez。有什么方法可以优化analyze查询,比如一些设置命令。

4

1 回答 1

0

hive.stats.autogather=true如果您使用插入覆盖加载表,则可以通过在插入覆盖查询期间进行设置来自动收集统计信息。

如果表是分区的并且分区正在增量加载,那么您只能分析最后一个分区。

ANALYZE TABLE [db_name.]tablename [PARTITION(partcol1[=val1], partcol2[=val2], ...)] 

请参阅此处的示例:https ://cwiki.apache.org/confluence/display/Hive/StatsDev

对于 ORC 文件,可以指定hive.stats.gather.num.threads增加并行度。

在此处查看统计设置的完整列表:https ://cwiki.apache.org/confluence/display/Hive/Configuration+Properties#ConfigurationProperties-Statistics

于 2019-03-09T08:01:21.787 回答