hadoop - 减少 Hive 查询执行时间的方法

标签 hadoop hive query-optimization hadoop-yarn

我们每天运行下面的查询,由于交易表中的数据量巨大,该查询运行了 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

我尝试减少 reducer 的数量以帮助加快速度,还尝试启用矢量化,但运气不佳。我们在 tez 上运行。

最佳答案

  1. 你不需要申请 DISTINCT 两次
  2. 如果表 mstr_wrk.cust_transationload_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'

关于hadoop - 减少 Hive 查询执行时间的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55045871/

相关文章:

sql - 查找配置单元中每个ID的平均小时数

java - 如果驱动程序崩溃,则终止 MapReduce 作业

hadoop - 是否可以在gradle中将文件的多个副本复制到HDFS

hadoop - 在YARN中设置作业优先级

sql - 最大 ID : sql/oracle optimization 的日期

hadoop - 我的 mapreduce 代码中出现以下错误

hadoop - 将条件字段添加到 Hive 或 Impala 中的表

sql - 从可能为空的多个表优化 SQL 查询

sql-server - 如何使用 SQL 查询降低聚集索引扫描成本

HADOOP HIVE - 是否有设置 csv 输出的命令