2017-09-06 1 views
0

(1)RDDでどのパーティションを退避させるかSparkがどのように決定するのですか?RDDキャッシュ退去のLRUポリシーはどのようにapacheで動作しますか?

(2)LRUとRDD​​ StorageLevelの関係は何ですか?

(3)データソースサイズが非常に大きい(すべてのエグゼキュータメモリの合計よりも大きい)場合、どのようにデータをスパークロードし、RDDを作成しますか?それはLRUに関連していますか?

私はこの質問を作成し、RDD LRU退去、StorageLevelについて詳しく説明しました。

答えて

1

1.デフォルトのRDD退避戦略はLRUです.RDDキャッシングにはメモリスペースが不足すると、いくつかのパーティションが退避されます。これらのパーティションが後で再び使用されると、それらはLineage情報によって再現され、再び。 メモリに収まらないキャッシュデータセットは、RDDのストレージレベルによって決定されるように、必要に応じてディスクにこぼれるか、必要に応じて再計算されます。

2. LRUとRDD​​のstorageLevelしかし、異なるstorageLevelを使用すると、メモリに収まらない場合でもデータをキャッシュすることができます。また、異なるstorageLevel間でも、MEMORY_AND_DISK_SERはGCを削減し、高価な再計算を避けることができます。

3.すべてのエグゼキュータメモリまたはクラスタサイズの合計より大きいデータでスパークを実行している場合、問題はありません。多くの操作でデータがストリームされ、メモリが使用されますほとんどの場合、ジョブが失敗した場合や個々のパーティションが大きすぎてメモリに収まらない場合、通常の方法ではより多くのパーティションに再パーティション分割するので、それぞれのパーティションが小さくなります。うまくいけば、それは収まるでしょう。

関連する問題