我試圖(內)加入HDFS分區由'天'(日期)多天(如2周)兩個表。兩個表都有100列,但我只是試圖查詢它們中的10個。每天有超過十億行。Hive查詢不斷失敗。如何最佳地加入非常大的桌子?
我的HIVE查詢看起來像下面。
INSERT OVERWRITE TABLE join1 partition (day)
SELECT a.x1, a.x2, a.x3... a.xn, b.y1, b.y2.... b.ym, b.day
from (
select x1, x2, x3... xn
from table1
where day between day1 and day2
) a
join (
select x1, y1, y2,... ym, day
from table2 where day between day1 and day2
) b
on a.x1=b.x1;
第一個問題 - 即使是較短的時間(1-7天),也需要很長時間(12小時以上)才能完成此操作。
第二個問題 - 每次嘗試超過10天左右都會失敗。它使用大約504個映射器和250個減速器,這是默認的(我也試過500個減速器)。
我知道這個錯誤是不是真正的(What is Hive: Return Code 2 from org.apache.hadoop.hive.ql.exec.MapRedTask),但即使是真正的錯誤並不是很有用(抱歉,我現在不能得到它)。
這是什麼原因導致崩潰?任何人都可以提出一個更好的方式來加入這麼大的表格嗎
嘗試使用TEZ執行引擎運行您的查詢。並且添加'-hiveconf hive.root.logger = DEBUG,console'可以給你更多關於錯誤的細節。 – Ambrish