簡體   English   中英

刪除未用於計算的列會影響 Spark 的性能嗎?

[英]Does dropping columns that are not used in computation affect performance in spark?

我有一個大型數據集(數億行),我需要使用帶有 Databricks 的 spark 進行大量處理。 該數據集有數十列,通常是 integer、浮點數或整數數組。

我的問題是:如果我在處理數據之前刪除一些不需要的列,會有什么不同嗎? 就 memory 和/或處理速度而言?

這取決於你打算如何處理這個數據集。 Spark 足夠聰明,可以確定真正需要哪一列,但並不總是那么容易。 例如,當您使用 UDF(用戶定義的功能)在案例 class 上運行並定義所有列時,所有列都將從源代碼為 select,因為從 Spark 的角度來看,這樣的 UDF 是一個黑盒子。

您可以通過 SparkUI 檢查為您的作業選擇了哪一列。 例如查看這篇博文: https://medium.com/swlh/spark-ui-to-debug-queries-3ba43279efee

在您的計划中,您可以查找此行:PartitionFilters: [], PushedFilters: [], ReadSchema: struct<id:string>

在 ReadSchema 中,您將能夠確定 Spark 讀取了哪些列,以及在我們的處理中是否真的需要它們

暫無
暫無

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

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