2017-07-23 86 views
0

我是新來的火花,想了解火花機作業的優化。火花機作業的優化

我的工作是一個簡單的轉換類型作業,根據條件合併兩行。人們可以對這些工作進行各種優化?有關作業

回答

0

更多的信息將有助於:

一些通用的建議:

  • 安排運營商是非常重要的。並非所有的安排都會導致同樣的表現。運營商的安排應該是這樣的,以減少洗牌數量和洗牌數據量。洗牌是相當昂貴的操作;所有的洗牌數據必須寫入磁盤,然後通過網絡傳輸。

重新分區,加盟,協同組,以及任何的*通​​過或* ByKey轉換可能導致洗牌。

  • rdd.groupByKey().mapValues(_.sum)會產生相同的結果rdd.reduceByKey(_ + _)。然而,前者將整個網絡傳輸整個數據集,而後者將計算每個分區中每個鍵的局部總和,並在洗牌之後將這些局部總和合併爲更大的總和。

通過利用broadcast variables優勢 連接兩個數據集時,您可避免洗牌。

  • 避免flatMap-join-groupBy模式。
  • 避免reduceByKey當輸入和輸出值類型不同時。

這並非詳盡無遺。你還應該考慮調整你的Spark配置。

我希望它有幫助。

+0

嗨,我的用例如下列問題中列出https://stackoverflow.com/questions/45252906/combine-two-rows-in-spark-based-on-a-condition-in-pyspark。你能告訴我一些我可以學習火花作業優化基礎知識的來源嗎? – AnmolDave

相關問題