【发布时间】:2018-04-03 00:11:00
【问题描述】:
请求您深入了解如何调整 Hive CTE 以提高性能。我有一个看起来像这样的查询。编辑:请注意以下两个语句具有不同的映射条件,因此两个 WHERE 条件不能简单地与以下 cmets 中建议的 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 执行,还是将其实现为具有最佳索引、分桶和排序的阶段表更好?谢谢!
【问题讨论】:
-
我认为最好的方法是将其保存为临时表。据我所知,每次引用 cte 名称时都会调用 cte 定义。
-
如果性能是您的目标,Spark 将比 HQL 快很多...只是一个想法。
标签: sql hive common-table-expression