[英]Approach to reduce the execution time of a Hive query
由于交易表中的数据量很大,我们每天在下面的查询中运行此查询,此查询运行3个小时左右。 有什么方法可以调整此查询或减少执行时间?
CREATE TEMPORARY TABLE t1 AS
SELECT DISTINCT EVENT_DATE FROM (
SELECT DISTINCT EVENT_DATE FROM mstr_wrk.cust_transation
WHERE load_date BETWEEN CAST(CAST('2019-03-05 04:00:31.0' AS TIMESTAMP) AS DATE) AND CURRENT_DATE() AND event_title = 'SETUP'
AND state != 'INACTIVE' AND mode != 'DORMANT') T
我试图减少减速器的数量以帮助加快速度,并且还尝试实现矢量化,但是在这里运气并不好。 我们正在tez上运行。
重新设计表并使用INDEX。
例如,我将使用数字“状态”列或枚举,以及数字或枚举“事件”列。 这可以帮助创建有效的索引,而不是varchar或文本类型。
如果查询正在使用索引,索引将大大提高查询速度。
无论如何,不知道表的结构和所涉及的记录数,我只是在猜测...
mstr_wrk.cust_transation
被划分load_date
,因为你使用的功能分区修剪将无法正常工作。 这将导致表完全扫描。 在shell脚本中计算日期并作为参数传递 在参数化脚本之前检查此脚本性能
CREATE TEMPORARY TABLE t1 AS
SELECT DISTINCT EVENT_DATE FROM mstr_wrk.cust_transation
WHERE load_date >= '2019-03-05' AND load_date <= '2019-03-07'
AND event_title = 'SETUP'
AND state != 'INACTIVE' AND mode != 'DORMANT'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.