【问题标题】:Hive query running infinite time on Tez在 Tez 上运行无限时间的 Hive 查询
【发布时间】:2016-06-29 16:59:56
【问题描述】:

以下是我尝试在 Hive 上运行的查询,执行引擎为 tez。

SELECT A.CITY, A.NAME, B.PRICE
  ,(ROW_NUMBER() OVER (PARTITION BY A.NAME ORDER BY B.PRICE) ) AS RNUM
  FROM TABLE1 A
  LEFT JOIN TABLE2 B 
   ON A.NAME = B.NAME 
   WHERE ( A.COLUMN2 >= B.COLUMN3 AND A.COLUMN2 < B.COLUMN4)
GROUP BY A.CITY, A.NAME, B.PRICE;
  • 当我对 Hive 中的数据运行上述查询时,它会持续运行数小时 没有任何结果,但从语法上看,上面的查询是正确的。
  • TABLEA 和 TABLEB 都有数百万条记录。

我尝试改变数据格式,增加容器大小,改变reducer的数量和堆大小。无论我更改什么参数,查询都会被卡住。

在我的进一步调查中,我注意到 where 条件和窗口函数导致查询无限运行。

这是我的问题:

  • 什么变化会使查询端到端地运行 数据?

感谢您的帮助

【问题讨论】:

    标签: hadoop hive hiveql hadoop2 tez


    【解决方案1】:

    我猜这不是由内存分配或减速器计数引起的。可能是由数据倾斜引起的。也从这点分析。此链接将有所帮助: https://cwiki.apache.org/confluence/display/Hive/Skewed+Join+Optimization

    下面的链接提供了有关倾斜表和列表分桶的见解。不要错过阅读。

    https://cwiki.apache.org/confluence/display/Hive/ListBucketing

    谢谢!

    【讨论】:

      猜你喜欢
      • 2019-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多