透かしの前に、時間の概念についてお話ししましょう。https://blog.51cto.com/mapengfei/2554577にはさまざまな時間枠があります。実際の制作では、どの時間に窓が生成されますか?事件はいつ起こったのですか?flinkプログラムに入る時間ですか?flinkが処理を開始したのは今でも
Flinkは
、コード環境で直接設定できる一連の設計ソリューション設定を提供します。
val env = StreamExecutionEnvironment.getExecutionEnvironment
// env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime) //以事件时间作为窗口聚合
//env.setStreamTimeCharacteristic(TimeCharacteristic.IngestionTime) //以数据进入flink的时间作为窗口时间
// env.setStreamTimeCharacteristic(TimeCharacteristic.ProcessingTime) //以Flink实际处理时间作为窗口时间
時間セマンティクス
さまざまなシナリオで、毎回使用シナリオがあり、具体的な実装は実際の状況に基づいているとしか言えません。
コードで設定
実行環境でsetStreamCharacteristicメソッドをコードで直接呼び出して
、ストリームの時間特性の特定の時間を設定し、データからタイムスタンプを抽出する必要があります。
イベント時間を使用する場合は、どのフィールドとを設定する必要もあります。フォーマットしないと、flinkは使用するフィールドを認識しません
val env = StreamExecutionEnvironment.getExecutionEnvironment
//
env.setStreamTimeCharcteristic(TimeCharacteristic.EventTime)の呼び出しの瞬間からenvによって作成された各ストリームに時間特性を追加します