我想讓所有惟一的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之上,我總是到內存不足異常結束