2016-04-15 12 views
2

sparkから並列にRedisに書き込むことは可能ですか?spark/scala redisへの並列書き込み

(または:スパークからすぐに数十キー/リストの何千ものを書き込む方法)

現在、私は、シーケンス内のキーでのRedisに書いて、それが永遠にをを取っています。私は約90000リスト(長さ2〜2000)を書く必要があります。スピードは非常に重要です。現在、1時間程度かかります。 Redisの伝統的なベンチマークでは、毎秒何千ものRedisの書き込みがあると主張していますが、私のパイプラインでは、その近くにはありません。

何か助けていただければ幸いです。

+1

私はTwitterであなたに質問しましたが、あなたの設定は何ですか?一回の赤ちゃん?レディスクラスター? RLEC? –

+0

ただ1つのRedisを実際に使用しています。 mesosクラスタで実行しています。 – BBischof

+0

コネクタは、すべてのスパークノードにローカルのredisノードがあり、パーティション化関数が一致するように、ローカルのredisに書き込むように、redisクラスタで実行するように最適化されています。いくつのスパークノードを実行していますか? –

答えて

1

単一のRedisインスタンスが1つのスレッドで実行されるため、操作は本質的に逐次的です。 Redisクラスタを使用している場合、データが書き込まれるインスタンスは、書き込まれるキーから計算されたhash slotに依存します。このハッシュ関数は、負荷がクラスタ内のすべてのRedisインスタンスに分散されるようにします。クラスターにN個のインスタンスがある場合、実行できるN個の並列書き込みが(ほぼ)最大であります。これは、各クラスタインスタンスが依然として単一のスレッドであるためです。合理的なSpark Redisコネクターは、クラスターを効率的に活用する必要があります。

いずれにしても、特に、mass insertsを使用すると、レディスはすばやくです。

関連する問題