2016-04-19 5 views
1

Spark計算を実行するデモアプリケーションがあります。そのために、オブジェクトファイルに格納されているRDDをロードしてから、ユーザーの入力に依存するいくつかのタスクを実行します。SparkのファイルからRDDへの強制ロード

sparkContext.objectFile()を使用してRDDをロードするのは時間がかかる操作です。時間が問題なので、デモが始まる前にロードして、プレゼンテーション中に入力に依存する計算を実行するだけです。ただし、Sparkの遅延ポリシーは、計算全体がトリガーされた後にのみファイルを読み込むようにします。

RDD.cache()は、自分自身のトリックを行いません。キャッシングも怠惰な操作です。

ファイルからRDDを強制的にロードする方法はありますか?

もしそうでない場合は、RDDの読み込み速度を上げたり、今後のSparkジョブのためにメモリに保存したりする方法はありますか?

スパークバージョンは1.5で、シングルノードスタンドアロンモードで動作します。ファイルはローカルファイルシステムから読み込まれます。私はSparkの設定や必要に応じてこれらの設定を微調整できます。

答えて

1

cache()を呼び出した後、rdd(通常はcount()を使用)のアクションを呼び出して、キャッシュを「マテリアライズ」します。このRDDへのさらなる呼び出しでは、キャッシュされたバージョンが使用されます。

RDD.cache().count() // this will load the RDD 
// use RDD, it's cached now 
+0

アドバタイズされていないようです。 RDDパーティションがメモリから削除されるか、完全にロードされない可能性はありますか? –

+0

あなたは十分なメモリがない場合のみ..あなたは? Spark UI(https:// :4040/storage /)でこれを確認し、RDDを探して "Fraction Cached"を確認してください –

+0

Sparkのメモリ管理パラメータに非常に敏感ですが –

関連する問題