2016-05-05 13 views
1

メモリフットプリントのコンセプトについてはわかりません。たとえば、寄木細工のファイルをロードするとき。 1GBとSparkでRDDを作成すると、各RDDのメモリフードプリントはどうなりますか?RDDメモリフットプリント(火花)

答えて

2

パーケットファイルからRDDを作成すると、RDDでアクションを実行する(たとえば、最初に収集する)まで、何もロード/実行されません。

今では、メモリフットプリントは時間の経過とともに変化する可能性が高いです。 100個のパーティションがあり、同じサイズ(それぞれ10 MB)であるとします。 20コアのクラスタで稼働しているとしたら、任意の時点で10MB x 20 = 200MBのデータをメモリに格納するだけで済みます。

これに加えて、Javaオブジェクトがより多くの領域を占める傾向があるため、1GBファイルがJVMヒープでどれくらいのスペースを占めるかを正確に言うことは容易ではありません。それは私に2倍またはそれ以上のことができます。

これをテストするトリックは、RDDを強制的にキャッシュすることです。 SparkのUIをStorageにチェックインして、RDDがキャッシュに費やした容量を確認することができます。

+0

応答mariosに感謝します。パーティションに言及すると、寄木細工のファイルからRDDが作成されますか? RDDは物理的なエンティティではないため、私たちの行動に基づいてメモリ内のデータだけが存在します。私はそれを正しく理解していますか?また、不等分割も可能ですか? –

+1

すべてのRDDがパーティション化されます。そうでない場合、並列性はありません。あなたが正しいです、RDDsは、彼らが(彼らが怠けている)必要があるまで具体化されていません。 1つの大きな寄木細工のファイルがある場合、それはかなり均等に分割する必要があります。はい、パーティションがインパレートされている場合があります。特に、1つの大きなファイルではなく、小さなファイルからRDDを生成する場合があります。 – marios

0

Marios、あなたの記憶投影では、あなたはパーケットの圧縮を考慮しませんでした。 1Gbは5GB非圧縮にすることができます。