Hive查询在Tez上运行无限时间

时间:2016-06-29 16:59:56

标签: hadoop hive hiveql hadoop2 tez

下面是我试图在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条件和窗口函数导致查询无限运行。

这是我的问题:

  • 什么是使查询以巨大的方式结束运行的更改 数据?

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

我想这不是由内存分配或减少计数引起的。可能是由数据倾斜引起的。从这一点分析也。这个链接有助于: https://cwiki.apache.org/confluence/display/Hive/Skewed+Join+Optimization

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

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

谢谢!