2017-06-27 3 views
2

データは{host |メートル法|値|タイムスタンプ}。我々は世界中のホストにメトリクスを報告しています。スパークストリーミング - ウィンドウ集約のデータを待っていますか?

このようなデータを処理するために、ウィンドウ操作(たとえば、1時間)を使用するのは少し混乱します。

  • いつ起動するか、またはアプリケーションの起動時に起動するかどうかを教えてください。私は、例えば、その日の11時からのすべてのデータを集約したいと考えています。私の窓が10時50分に始まったら、10時50分11時50分になり、10分を逃すでしょう。

  • ウィンドウが完全であっても、データが遅く到着することがあります。

人々はこのような問題をどのように処理しますか?彼らはウィンドウを必要以上に大きくして、バッチサイクル(スライドの種類)ごとに気にするデータを取得するだけですか?

答えて

1

これまで、私は大規模なIoTプラットフォームに取り組み、ウィンドウが部分的な計算にすぎないと考えてこの問題を解決しました。バックエンド(Cassandra)をモデル化して、各ウィンドウに対して1つ以上のレコードを受け取るようにしました。任意の与えられたウィンドウの実際の値は、そのウィンドウで見つかったすべての部分的なレコードの追加です。

したがって、完璧なウィンドウは1レコード、分割ウィンドウは2レコード、遅い到着は自然にサポートされますが、特定の「年齢」のしきい値までしか受け入れられません。リコンシリエーションは読み取り時に行われました。このプラットフォームは、書き込みと書き込みの面ではかなり重いので、良い妥協のために作られました。

+0

など、停止/起動するとき、あなたのバッチを伝えることができるとは思いません。共有していただきありがとうございます :)。 OpenTSDBが今問題をどのように解決しているかのように聞こえます。私はそれが私の場合にどのように機能するかを考えます。 –

+0

私はこれを実行可能な回答として受け入れ、私自身もいくつかの他の形式から追加しました。ありがとうございました。 –

1

MapRフォーラムで深い人と話し合った後、時間と日単位の集計をストリームで行うのではなく、データが準備できたら別のバッチジョブで行うべきであると思われます。

ストリーミングを行うときは、ストリーミング間隔の比較的小さな倍数のウィンドウを持つ小さなバッチに固執する必要があります。スライディングウインドウは、最後の50バッチのトレンドに役立ちます。 1時間か1日のような大きい仕事のためにそれらを使用することは分かりやすいように見えません。

また、私は面白いオプションだこと

関連する問題