Apache flink Don';我不明白,加入弗林克

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

来自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] = ...

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
的元素合并

我真的不认为您可以使用它仅对部分数据执行联接,我唯一能想到的是使用时间戳简单地过滤数据,并过滤掉之前生成的所有元素