hive查询在tez上运行无限时间

pprl5pva  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(608)

下面是我试图在执行引擎为tez的hive上运行的查询。

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;

当我在配置单元中对数据运行上述查询时,它会持续运行数小时而没有任何结果,但从语法上讲,上述查询是正确的。
表A和表B都有数百万条记录。
我尝试更改数据格式、增加容器大小、更改缩减器的数量和更改堆大小。无论我更改什么参数,查询都会被卡住。
在进一步的研究中,我注意到where条件和window函数导致查询无限运行。
我的问题是:
有什么变化会使查询在海量数据上端到端地运行?
谢谢你的帮助

shstlldc

shstlldc1#

我猜这不是由内存分配或减速机计数引起的。可能是数据倾斜造成的。也从这一点来分析。此链接将有助于:https://cwiki.apache.org/confluence/display/hive/skewed+join+optimization
下面的链接提供了关于倾斜表和列表排序的见解。不要错过阅读。
https://cwiki.apache.org/confluence/display/hive/listbucketing
谢谢!

相关问题