web-dev-qa-db-ja.com

Spark Transformation-なぜ怠惰であり、利点は何ですか?

Spark Transformationsは遅延評価されます-アクションを呼び出すと、系統グラフに基づいてすべての変換が実行されます。

Transformations Lazilyyを評価してもらう利点は何ですか?

performanceを改善し、熱心に評価するよりもmemory consumptionの量を減らしますか?

トランスフォーメーションを遅延評価することの欠点はありますか?

12
Shankar

変換の場合、Sparkは計算のDAGにそれらを追加し、ドライバーがいくつかのデータを要求した場合にのみ、このDAGは実際に実行されます。

これの1つの利点は、Sparkは、DAG全体を確認する機会を得た後、多くの最適化の決定を行うことができるということです。それは、すべてを実行したらすぐに実行した場合、不可能です。

たとえば、すべての変換を熱心に実行した場合、それはどういう意味ですか?まあ、それはあなたがメモリにその多くの中間データセットを具体化しなければならないことを意味します。これは明らかに効率的ではありません。1つには、GCコストが増加します。 (あなたはそれらの中間結果自体には本当に興味がないので。それらはプログラムを書くときにあなたにとって便利な抽象概念です。)したがって、代わりにあなたがすることは-あなたはSpark whatあなたが興味を持っている最終的な答えであり、そこに到達するための最良の方法を見つけ出します。

19
Sachin Tyagi

エラー、警告、情報メッセージがあり、HDFSに64 MBまたは128 MBのブロックとして存在する1 GBのログファイルを考えます(このコンテキストでは関係ありません)。まず、このテキストの「入力」と呼ばれるRDDを作成します。ファイル。次に、「入力」RDDにフィルターを適用して「エラー」と呼ばれる別のRDDを作成し、エラーメッセージを含む行のみをフェッチしてから、「エラー」RDDでアクションfirst()を呼び出します。 Sparkは、いずれかのパーティションでエラーメッセージの最初の発生を見つけるとすぐに停止することにより、ログファイルの処理を最適化します。同じシナリオが熱心な評価で繰り返された場合、 Sparkは、最初のエラーメッセージのみに関心がある場合でも、ログファイルのすべてのパーティションをフィルタリングします。

5
Aniketh Jain

https://www.mapr.com/blog/5-minute-guide-understanding-significance-Apache-spark から

遅延評価とは、Sparkに一連のデータを操作するように指示した場合、実行するように要求した内容をリッスンし、その省略形を書き留めて忘れないようにすることです。最終的な回答を求めるまで、何もしません[...]

オペレーターへの指定が完了するまで待機し、最終的な回答を求めた場合にのみ、評価を行い、常に、実行する必要がある作業量を制限します。

時間と不要な処理能力を節約します。

3