Apache flink Don';我不明白,加入弗林克
来自Flink的官方文件: 示例代码为:Apache flink Don';我不明白,加入弗林克,apache-flink,Apache Flink,来自Flink的官方文件: 示例代码为: import org.apache.flink.streaming.api.functions.co.ProcessJoinFunction; import org.apache.flink.streaming.api.windowing.time.Time; ... val orangeStream: DataStream[Integer] = ... val greenStream: DataStream[Integer] = ... ora
import org.apache.flink.streaming.api.functions.co.ProcessJoinFunction;
import org.apache.flink.streaming.api.windowing.time.Time;
...
val orangeStream: DataStream[Integer] = ...
val greenStream: DataStream[Integer] = ...
orangeStream
.keyBy(elem => /* select key */)
.intervalJoin(greenStream.keyBy(elem => /* select key */))
.between(Time.milliseconds(-2), Time.milliseconds(1))
.process(new ProcessJoinFunction[Integer, Integer, String] {
override def processElement(left: Integer, right: Integer, ctx: ProcessJoinFunction[Integer, Integer, String]#Context, out: Collector[String]): Unit = {
out.collect(left + "," + right);
}
});
});
从上面的代码中,我想知道如何指定开始时间(例如,从今天开始)来执行此间隔联接(开始时间之前的数据将不予考虑)
例如,我已经运行该程序3天了,我不想在3天内对所有数据执行此连接,
我只想对今天生成的数据执行联接。我认为它的工作方式与您认为的不同 在本例中,实际间隔是基于
orangeStream
的实际时间戳计算的,因此您并没有真正提供要考虑的数据间隔,而是这是一个类似于窗口的东西,它指定哪些元素将与orangeStream的给定元素连接
因此,对于上面描述的窗口,如果您有时间戳为5
的橙色元素,那么它将与时间戳为3
到6
的元素合并
我真的不认为您可以使用它仅对部分数据执行联接,我唯一能想到的是使用时间戳简单地过滤数据,并过滤掉之前生成的所有元素