2017-03-06 129 views
2

我的問題是,在使用Spark SQL將表格非規範化爲更大的表格時,我得到的任務大小過大。如何避免「任務大小過大」?

在人們指出其他答案說使用廣播或避免關閉整個班級之前;讓我說我已經閱讀過這些內容,並且在使用Spark SQL時仍然特別困惑。

使用Spark SQL時,我的任務大小高達推薦大小的10倍。

這裏的情況:

  • 我有10+表/數據幀加入到尤伯杯表。
  • 我創建了一個單一的scala對象,並在正文中填充了這些10個表格中的CSV。
  • 我導入該對象的成員(只是表格)在其他對象,其中形成他超級表的計算是。
  • 當這10個表之間的Spark-SQL連接運行時,比如將結果表寫入parquet文件時,我得到任務大小警告。

額外的信息:

  • 我已經試過移動源表到不同的類別和功能嵌入他們和任務大小沒有改變。

  • 我不確定廣播如何幫助解決這個問題,因爲源數據是使用Spark-CSV直接讀入數據框的,因此應該已經分發了。

+0

你可以在問題中包含警告嗎?你能顯示導致警告的代碼嗎? –

回答

-1

火花,你可以選擇caching (persistence) level一些大的內存中對象卸載到磁盤,並使用unpersist()選擇哪一個已緩存的結果扔掉。

+0

請充實一下你的回答,例如解釋如何選擇緩存級別以避免大量內存使用,以及如何使用'unpersist()'來釋放內存。 – ktdrv

相關問題