2
私はスパークストリーミングジョブを持っています。入力RDDにフィルタを適用したい。スパークストリーミング - 動的フィルタ
各スパークストリーミングバッチ中にHbaseからフィルタ条件を動的にフェッチしたいとします。
どうすればよいですか?
マップパーティションを使用して接続オブジェクトを1回作成できます。
しかし、スパークフィルタではどのように私は同じことを達成できますか?
私はスパークストリーミングジョブを持っています。入力RDDにフィルタを適用したい。スパークストリーミング - 動的フィルタ
各スパークストリーミングバッチ中にHbaseからフィルタ条件を動的にフェッチしたいとします。
どうすればよいですか?
マップパーティションを使用して接続オブジェクトを1回作成できます。
しかし、スパークフィルタではどのように私は同じことを達成できますか?
私が思うに、正しいアプローチは、独自の(擬似コード)のフィルタ機能を書いている:
DStream<Integer> intDstream= someIntegerIntoDStream;
intDstream.foreachPartition{
create HBase connection here if you need it for a batch
while(arg0.hasNext()){ //here you have an iterator
Integer current = arg0.next();
create HBase connection here if you need it for each element
//Here is your filter function:
if(current meets your condition)
arg0.remove();
だから何が起こるかは、あなたのエグゼキュータで実行されている、あなたは手動で各要素を選ぶ、条件を適用することですあなたの基準を満たしていればそれを取り除く。
フィルタの条件によっては、「結合」でそれを達成できる可能性があります。あなたは何をしようとしているのかについて完全な例を挙げなければなりませんが、結合の左側があなたのSpark Streamなら、右側が一連の基準になります。条件が1つも適用されない場合、ジョインは行を生成しません。 –