取消
顯示的結果
而不是尋找
你的意思是:

“光子耗盡內存”,而當試圖從sql查詢的惟一Id

生鏽的
新的貢獻者二世

我想讓所有惟一的id從sql查詢和我總是耗盡內存

選擇concat_ws (‘;’, view.MATNR view.WERKS) hive_metastore.dqaas。加入hive_metastore.dqaas temp_view作為視圖。t_dqaas_marc馬克馬克。MATNR =視圖。MATNR視圖。頌歌不在(‘BR91’,‘BR92’,‘BR94’,‘BR97’,‘BR98’,‘BR9A’,‘BR9B’,‘BR9C’,‘BR9D’,‘BR9L’,‘BR9X’,‘CN9S’,‘XM93’,‘ZA90’,‘ZA93’)和馬克。HERKL =視圖。HERKL和馬克。LVORM = ' '

使用以下代碼

var df =火花。sql(“選擇concat_ws (‘;’, view.MATNR view.WERKS) hive_metastore.dqaas。加入hive_metastore.dqaas temp_view作為視圖。t_dqaas_marc馬克馬克。MATNR =視圖。MATNR視圖。頌歌不在(‘BR91’,‘BR92’,‘BR94’,‘BR97’,‘BR98’,‘BR9A’,‘BR9B’,‘BR9C’,‘BR9D’,‘BR9L’,‘BR9X’,‘CN9S’,‘XM93’,‘ZA90’,‘ZA93’)和馬克。HERKL =視圖。HERKL和馬克。LVORM = ' '") var distinctValue: Set[String] = df.rdd.mapPartitions(data => { var unqiueIdSet = data.map(row => row.getAs[String](0)).toSet Iterator(unqiueIdSet) }).collect.flatten.toSet

數據temp_view = 5000

數據t_dqaas_marc = 22354457

輸出查詢給我4盧比+記錄

我變得異常

工作階段失敗而終止:執行該查詢時光子耗盡內存。光子沒有儲備512.0 MiB哈希表桶,在SparseHashedRelation BuildHashedRelation, BroadcastHashedRelation (spark_plan_id = 59815)。內存使用量:BroadcastHashedRelation (spark_plan_id = 59815):分配1310.0 MiB,追蹤1310.0 MiB,開始回升的分配0.0 B,峰值1310.0 MiB BuildHashedRelation:分配1310.0 MiB,追蹤1310.0 MiB,開始回升的分配0.0 B,峰值1310.0 MiB PartitionedRelation:分配1310.0 MiB,追蹤1310.0 MiB,開始回升的分配0.0 B,峰值1310.0 MiB分區0:分配1310.0 MiB,追蹤1310.0 MiB,開始回升的分配0.0 B,峰值1310.0 MiB行:分配890.0 MiB,追蹤890.0 MiB,開始回升的分配0.0 B,峰值890.0 MiB var-len數據:分配420.0 MiB,追蹤420.0 MiB,開始回升的分配0.0 B,峰值420.0 MiB SparseHashedRelation:分配0.0 B,跟蹤0.0 B,開始回升的分配0.0 B,峰值0.0 B哈希表var-len關鍵數據:0.0 B分配,跟蹤0.0 B,開始回升的分配0.0 B,峰值0.0 B哈希表有效載荷:分配0.0 B,跟蹤0.0 B,開始回升的分配0.0 B,峰值0.0 B哈希表桶:分配0.0 B,跟蹤0.0 B,開始回升的分配0.0 B,造成峰值0.0 B: SparkOutOfMemoryError:光子耗盡內存,執行該查詢。光子沒有儲備512.0 MiB哈希表桶,在SparseHashedRelation BuildHashedRelation, BroadcastHashedRelation (spark_plan_id = 59815)。內存使用量:BroadcastHashedRelation (spark_plan_id = 59815):分配1310.0 MiB,追蹤1310.0 MiB,開始回升的分配0.0 B,峰值1310.0 MiB BuildHashedRelation:分配1310.0 MiB,追蹤1310.0 MiB,開始回升的分配0.0 B,峰值1310.0 MiB PartitionedRelation:分配1310.0 MiB,追蹤1310.0 MiB,開始回升的分配0.0 B,峰值1310.0 MiB分區0:分配1310.0 MiB,追蹤1310.0 MiB,開始回升的分配0.0 B,峰值1310.0 MiB行:分配890.0 MiB,追蹤890.0 MiB,開始回升的分配0.0 B,峰值890.0 MiB var-len數據:分配420.0 MiB,追蹤420.0 MiB,開始回升的分配0.0 B,峰值420.0 MiB SparseHashedRelation:分配0.0 B,跟蹤0.0 B,開始回升的分配0.0 B,峰值0.0 B哈希表var-len關鍵數據:0.0 B分配,跟蹤0.0 B,開始回升的分配0.0 B,峰值0.0 B哈希表有效載荷:分配0.0 B,跟蹤0.0 B,開始回升的分配0.0 B,峰值0.0 B哈希表桶:分配0.0 B,跟蹤0.0 B,開始回升的分配0.0 B,峰值0.0 B

我的集群配置

- 18的工人

32 - 256 GB memory8 - 64 Cores1司機

16 GB的內存,4 CoresRuntime

11.3.x-scala2.12

光子

Standard_D4as_v5

6-34 DBU /小時

我曾經嚐試過將輸出保存到另一個表我遇到了同樣的問題。

df.write.format .mode(“δ”)(“覆蓋”)。選項(“overwriteSchema”,“真正的”).saveAsTable (tempTableName)

無論我做什麼操作sql查詢dataframe之上,我總是到內存不足異常結束

1接受解決方案

接受的解決方案

werners1
尊敬的貢獻者三世

收集聲明所有數據移動到司機。所以你失去所有的並行性和司機必須做所有的處理。如果你加強你的驅動,它可能會奏效。

在原帖子查看解決方案

2回答2

werners1
尊敬的貢獻者三世

收集聲明所有數據移動到司機。所以你失去所有的並行性和司機必須做所有的處理。如果你加強你的驅動,它可能會奏效。

Vidula_Khanna
主持人
主持人

嗨@Anil Kumar Chauhan

我們沒有收到你自從上次反應@Werner Stinckens。請與我們分享的信息,作為回報,我們將為您提供必要的解決方案。

感謝和問候

歡迎來到磚社區:讓學習、網絡和一起慶祝

加入我們的快速增長的數據專業人員和專家的80 k +社區成員,準備發現,幫助和合作而做出有意義的聯係。

點擊在這裏注冊今天,加入!

參與令人興奮的技術討論,加入一個組與你的同事和滿足我們的成員。

Baidu
map