2017-03-09 11 views
0

私はApache Sparkでセンサーストリームを分析したい場合があります。ストリームは、さまざまなセンサからのセンセラデータの存在しますが、すべて同じ種類のデータをプッシュします。dstreamのレコードを比較する

このストリームから、特定の値が特定のしきい値をどれだけ下回っているかを各センサーごとに知りたい。センサーはタイムスタンプと値を含むx秒ごとにレコードを送信します。私は、センサーが値以下である間隔を抽出して、持続時間、開始時間、終了時間、平均値を取得するのが好きです。 接続されているすべてのセンサーから、すべての間隔の開始時間と終了時間を抽出するための適切な( 'Sparkish')方法についてはわかりません。

私が現在使っているアプローチは、特定のセンサーからの間隔の一部である場合に各レコードを一意にマークするためのいくつかの状態変数を持つforeach-loopです。レコードがマークされると、map-reduceアプローチが必要な情報を抽出するために使用されます。しかし、私はforeach-loopに慣れていないと感じています。なぜなら、map-reduceのアプローチには適していないため、作業がワーカーに分散されているとうまく調整できないからです。 もっと一般的に言えば、私は、rddの個々のレコードと異なるdstreamのレコードを比較するという課題に直面しています。

誰でもこのような(些細な)ケースを認識し、これに対処するためのより優れた優雅なアプローチを知っています。

答えて

0

これを行う最良の方法は、mapWithState()を使用することです。この関数は、連続したdstreamの値の間で状態を維持するためのエレガントかつ柔軟な方法を提供します。

関連する問題