请求您了解如何调整hive CTE以提高性能。我有一个类似这样的查询。edit:注意下面的两个语句具有不同的Map条件,因此这两个where条件不能简单地与or条件组合,正如下面的注解中所建议的那样。
WITH complex_query AS (
... big nasty HQL statement ...
)
SELECT complex_mapping_case FROM complex_query
WHERE condition_1
UNION ALL
SELECT different_mapping_case FROM complex_query
WHERE condition_2
UNION ALL
.... many more times....
hive是智能地执行一次cte查询并将结果存储在内存(或磁盘)中,还是针对每个where条件执行多次cte?
您认为最好将其作为一个cte来执行,还是将其具体化为一个具有最佳索引、bucketing和排序的stage表?谢谢!
2条答案
按热度按时间egmofgnx1#
这太长了,不能发表评论。
你为什么用这个
union all
? 为什么不用呢or
:dvtswwa32#
我的理解是,联合体都将多次运行该查询。
如果您使用
而不是
如果你必须从cte中选择多次,我的理解是每次都从磁盘读取。
我的理论(仅基于我有限的经验)是,temp表的性能提高取决于您拥有多少ram和您的服务器设置