簡體   English   中英

Hive Join卡在Map階段

[英]Hive Join stuck at Map stage

在Hive中,我有一個大表B (約3億行)和一個相對較小的表A 我只是想SELECT A.*, B.* FROM A LEFT JOIN B ON A.a_id = B.b_id上執行SELECT A.*, B.* FROM A LEFT JOIN B ON A.a_id = B.b_id但是查詢停留在地圖50%處並且無法進行。 我也嘗試在PySpark中執行相同的操作,但基本上得到了相同的結果。 a_idb_id都是字符串,分別是AB唯一鍵。 為了執行聯接,不必選擇A.*B.* ,而只需選擇我當前分析中絕對需要的列。 即使現在可以完成此加入,但是任何人都可以請我更深入地了解我為什么會遇到這個問題嗎? 僅僅是表的大小對於工作者內存而言太大了嗎?

由於使用的是select * ,因此將掃描所有表數據。 同樣,一個表具有較少的記錄,因此沒有分配適當的資源,因此由於資源的不可用而被卡住。

啟用映射聯接並增加堆內存應有助於解決此問題。 您可以通過在查詢之前設置以下屬性來啟用這些功能。

set mapreduce.map.java.opts=-Xmx7200m;
set hive.auto.convert.join = true;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM