Spark の Hadoop の分散キャッシュに似た機能を探しています。いくつかの計算を行うために、すべてのノードに存在する比較的小さなデータ ファイル (いくつかのインデックス値を含む) が必要です。Spark でこれを可能にするアプローチはありますか?
これまでの私の回避策は、通常の処理としてインデックス ファイルを配布して縮小することで構成されており、私のアプリケーションでは約 10 秒かかります。その後、次のように、ブロードキャスト変数として示すファイルを永続化します。
JavaRDD<String> indexFile = ctx.textFile("s3n://mybucket/input/indexFile.txt",1);
ArrayList<String> localIndex = (ArrayList<String>) indexFile.collect();
final Broadcast<ArrayList<String>> globalIndex = ctx.broadcast(indexVar);
これにより、プログラムは変数globalIndexの内容を理解できるようになります。これまでのところ、私にとっては問題ないかもしれないパッチですが、最善の解決策ではないと考えています. かなり大きなデータセットや大量の変数でも効果があるでしょうか?
注: 複数の EC2 インスタンスに配置されたスタンドアロン クラスターで実行されている Spark 1.0.0 を使用しています。