簡體   English   中英

Apache Spark 性能調優

[英]Apache Spark performance tuning

我在使用 Upsert(插入和更新記錄)邏輯將 4MB 文件加載到 hive 表時遇到性能問題。 作為此負載的一部分,我們有兩個階段 -

第 1 階段 - 將 4MB 文本文件加載到表 A

第 2 階段 - 通過從返回大約 600 萬條記錄的表 A 中排除 source_code NOT IN ("ABC") 來加載表 B

val finalizedDf= sparkSession.sql(s"""select * from $tableA where $source_code not in ("ABC")""")


finalizedDf.write.format("parquet").mode("Overwrite").insertInto(tableB)

插入表 B 時,作業因 memory 限制超過執行程序內存開銷而失敗。 此外,負載運行超過 5 小時。 請針對上述情況推薦性能轉向技巧:)

在 spark 中執行性能調優時需要考慮很多事情。

  1. 什么是隨機分區集? 默認情況下,它設置為 200。您需要將其更改為更大的數字。 spark.sql.shuffle.partitions=1000

  2. 執行器核心和執行器 memory。 通過查看描述,在我看來執行者 memory 較少。 少 memory 會頻繁觸發 GC 減慢 spark 執行速度。 嘗試增加它。

  3. 執行 insertInto 時不需要overwrite

改用這個。 finalizedDf.write.format("parquet").insertInto(tableB)

暫無
暫無

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

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