Flink流SQL JOIN进行相同流的两次转换

时间:2019-01-18 18:06:31

标签: scala apache-flink flink-streaming

嗨,我只是想弄清楚我对流时间的理解是否正确。我们当前正在使用事件时间,并且由于我们需要将同一流上的两个不同转换的结果连接在一起,因此希望将自身与流“自我连接”,问题是:结果是否一致? 我可以期望事件将以有序和“同步”的方式处理吗?

基本上,我们使用intervalJoin来计算事件之间的相互发生,并使用另一种转换来计算特定事件的发生。显然,我希望对两者进行同步,以便在计算动态表上的查询结果时,每个事件的相关性计数和整体事件发生率计数是一致的(输入到事件时间)。

val keyedLines= lines.assignAscendingTimestamps(_.time).keyBy(2)
val totals = keyedLines.map(e=>(e.asset,1)).keyBy(0).sum(1)

val correls =  keyedLines
      .intervalJoin(keyedLines)
      .between(Time.minutes(-15), Time.minutes(15))
      .process(...)

tableEnv.registerDataStream("correls", correls)
tableEnv.registerDataStream("totals", totals)

tableEnv.sqlQuery("SELECT ...... FROM correls JOIN totals ....")

我可以期望SQL查询的流式传输结果一致吗?

谢谢

0 个答案:

没有答案