2017-11-24 5 views
-3

これは非常に複雑な概念です。1.ウィンドウ(TumblingEventTimeWindows.of(Time.seconds(n)))、このExpressは2つの概念、ウィンドウを持っています:EventWindow、イベント時刻がウォーターマークでマークされ、ウィンドウがウォーターマークによって作成されます。時間はイベント時間、n秒はイベント時間です。ウィンドウのサイズはイベントの時間サイズです。 ウィンドウ[0〜5s]は1回だけ計算され、ウィンドウ[5〜10s]が閉じられると結果が出ます。 2. allowedLateness(Time.seconds(5))、この表現にはただ1つのコンセプト(潜在時間(現実世界の時間))があります。しかし、それは見た目ほど簡単ではありません。イベント[0〜5s]が来るとウィンドウ[0〜5s]を作成するか、特定ウィンドウ[0〜5s]に入れ、別のイベント[5〜10]が来ると、widow [0 〜5秒)を閉じると、新しいウィンドウ[5〜10秒]が作成されます。遅れが誘発され、イベントがウィンドウ[0〜5s)<待ち時間(これは現実世界の時間)になり、イベントを計算することができる。これはあまり正確ではありません。 allowedLatenessはウィンドウの計算方法を変更しますが、これはOnly Windowの計算とは異なります。 Oncelateイベントが来たら、それは一度計算されます。実際の世界時間は実際にサーバー時間です。 3.新しいウォーターマーク(currentTime - N)は、この表現は唯一の概念を持っています:秩序の乱れ、これはウィンドウの計算を遅らせる、それはちょうどウィンドウ時間(閉時)遅延N秒です。一度だけ計算されます。Flinkウィンドウ、イベント時間、Lateness、maxOutOfOrderness

データ速度が速すぎると、イベントが非常に速く入力されます。ウィンドウが閉じていると、Iteratorの計算がまだ行われていない可能性があります。

+0

これは質問またはコメントですか? Stack Overflowは質疑応答サービスなので、これを質問に置き換えるべきです。 また、イベントタイム、透かし、およびウィンドウの概念の説明、および許可された遅延は、*正しくはありません*。 –

+0

これは疑問ではありません。スタックを使って記録しています。あなたが窓、遅れ、maxoutoforderをテストしていないなら、どうすれば正しいのか教えてくれますか?私はあなたにテストデータ、テストデータサーバ、テストコードを与えることができます。どちらが正しいかわからないでください。あなたが主張しているなら、潜在時間は透かし時間かサーバー時間か教えてください。最大時間は水の時間かサーバーの時間かを教えてください。 – Chen

+0

私はFlinkフォーラムにログインできないので、私は質問することができません。私はFlinkについての質問をすると、それほど多くの人がそれに答えることができないか、そう多くの人が興味を持っていないようです。だから私は自分の経験を記録したい。私は自分のクラスターの生産環境で教えてくれます。私はローカルサーバーにデータを集約し、データをクラスターに集約することができます。それはできますか? – Chen

答えて

0

これはばかげています。私はどれくらい多くの人がFlinkイベントの時間窓をテストするか分かりません。私が知っているように、生産環境、特に巨大なデータ環境でそれを使う人が少なくなっています。 ここでは、イベントの時間枠は何ですか?コミッタがそれに答えることができると思います。結果を入手し、誰が間違っているか教えてください。 Flinkのコンセプトを知るには、テストするのに適したデータを持っている必要があり、それがなぜそれなのかを理解することです。 これはテストデータです。データを送信するサーバーが必要です。

key1 | 1483250640000 | key1 | 1483250649000 | key1 | 1483250642000 | key1 | 1483250650000 | key1 | 1483250641000 | key1 | 1483250653000 | key1 | 1483250648000 | key1 | 1483250645000 | key1 | 1483250658000 | key1 | 1483250647000 | key1 | 1483250643000 | key1 | 1483250661000 | key1 | 1483250662000 | key1 | 1483250667000 | key1 | 1483250663000 |

flinkソケット接続時にデータを送信します。 スリープ状態のすべてのデータを、ソケット接続時に送信します。 異なる結果が表示されます。 Flinkイベントウィンドウは5秒です。

dataStream.keyBy(row -> (String)row.getField(0)) 
     .window(TumblingEventTimeWindows.of(Time.seconds(5))) 
     .allowedLateness(Time.seconds(5)) 
     .fold(initRow(), new MyFoldFunction()) 

お試しください。あなたは誰が嘘つきかを知るでしょう。

+0

@Fabian Hueske、それを説明できますか? – Chen

関連する問題