为了加速大型表上的etl查询,我们运行了许多 analyze 晚上对这些表和日期列的查询。但是这些 analyze 对列的查询占用大量内存和时间。我们正在使用tez。有没有办法优化 analyze 查询也像一些set命令。
analyze
ttisahbt1#
如果使用insert overwrite加载表,则可以通过设置 hive.stats.autogather=true 在插入覆盖查询期间。如果表已分区并且分区正在增量加载,则只能分析最后一个分区。
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-统计学
hive.stats.gather.num.threads
1条答案
按热度按时间ttisahbt1#
如果使用insert overwrite加载表,则可以通过设置
hive.stats.autogather=true
在插入覆盖查询期间。如果表已分区并且分区正在增量加载,则只能分析最后一个分区。
参见以下示例:https://cwiki.apache.org/confluence/display/hive/statsdev
对于orc文件,可以指定
hive.stats.gather.num.threads
增加平行度。请参见此处统计设置的完整列表:https://cwiki.apache.org/confluence/display/hive/configuration+properties#configurationproperties-统计学