You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-zh@flink.apache.org by 忝忝向仧 <15...@qq.com> on 2020/04/04 10:16:30 UTC

回复: Flink双流Join问题

下发新的?


4是一个kafka的source,3是另外一个kafka的source.
如果按照3秒的一个窗口
watermark触发窗口的条件是watermark_time&gt;=window_endtime


也就是说[55000,57000)应该是一个窗口的.


我是这么理解的,但是结果56000后就输出了


currentTimeStamp:&nbsp;1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
4&gt; (1,tom1,1000000055000)
currentTimeStamp:&nbsp;1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
4&gt; (1,tom2,1000000056000)
currentTimeStamp:&nbsp;1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
3&gt; (1,jerry1,1000000055000)
currentTimeStamp:&nbsp;1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
3&gt; (1,jerry2,1000000056000)
2&gt; tom1=jerry1







------------------&nbsp;原始邮件&nbsp;------------------
发件人:&nbsp;"lee.roval"<lee.roval@gmail.com&gt;;
发送时间:&nbsp;2020年4月4日(星期六) 晚上6:10
收件人:&nbsp;"user-zh@flink.apache.org"<user-zh@flink.apache.org&gt;;

主题:&nbsp;Re: Flink双流Join问题



56000后不是下发新的watermark了嘛

在 2020/4/4 下午5:57,“忝忝向仧”<153488125@qq.com&gt; 写入:

&nbsp;&nbsp;&nbsp; 各位好:&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Flink双流Join遇到一个问题,能否解释下,谢谢.
&nbsp;&nbsp;&nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ds1和ds2分别读取kafka两个流数据,使用event time和watermark特性,3s的一个翻滚窗口,定义如下:
&nbsp;&nbsp;&nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 最后,join输出的时候,为什么触发窗口的数据第二条就触发了?
&nbsp;&nbsp;&nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 按照水印的触发条件应该是watermark_time&amp;gt;=window_endtime.那么,这里应该是1000000057000这条数据来了后才会触发,但是结果却是56000就触发了.为什么?
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 定义的代码如下:
&nbsp;&nbsp;&nbsp; DataStream<String&amp;gt; stream1 = env
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .addSource(new FlinkKafkaConsumer09<String&amp;gt;("stream1", new SimpleStringSchema(), properties).setStartFromLatest())
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .assignTimestampsAndWatermarks(
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new AssignerWithPeriodicWatermarks<String&amp;gt;() {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; long currentTimeStamp = 0L;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; long maxDelayAllowed = 0L;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; long currentWaterMark;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @Nullable
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @Override
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Watermark getCurrentWatermark() {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; currentWaterMark = currentTimeStamp-maxDelayAllowed;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return new Watermark(currentWaterMark);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @Override
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public long extractTimestamp(String s, long l) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String[] arr= s.split(" ");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; long timeStamp = Long.parseLong(arr[2]);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; currentTimeStamp = Math.max(timeStamp, currentTimeStamp);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("currentTimeStamp: " +&nbsp; currentTimeStamp +",Key:" + arr[0] + ",EventTime:" + timeStamp + ",前一条数据的水位线:" + currentWaterMark);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return timeStamp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; DataStream<Tuple3<String,String,String&amp;gt;&amp;gt; ds1 = stream1.map(new MapFunction<String, Tuple3<String,String,String&amp;gt;&amp;gt;() {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @Override
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Tuple3<String, String,String&amp;gt; map(String s1) throws Exception {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String[] arr = s1.split(" ");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return Tuple3.of(arr[0],arr[1],arr[2]);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp; });
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; ds1.print();
&nbsp;&nbsp;&nbsp; DataStream<String&amp;gt; stream2 = env
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .addSource(new FlinkKafkaConsumer09<String&amp;gt;("stream2", new SimpleStringSchema(), properties).setStartFromLatest())
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .assignTimestampsAndWatermarks(
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new AssignerWithPeriodicWatermarks<String&amp;gt;() {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; long currentTimeStamp = 0L;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; long maxDelayAllowed = 0L;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; long currentWaterMark;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @Nullable
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @Override
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Watermark getCurrentWatermark() {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; currentWaterMark = currentTimeStamp-maxDelayAllowed;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return new Watermark(currentWaterMark);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @Override
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public long extractTimestamp(String s, long l) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String[] arr= s.split(" ");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; long timeStamp = Long.parseLong(arr[2]);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; currentTimeStamp = Math.max(timeStamp, currentTimeStamp);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("currentTimeStamp: " +&nbsp; currentTimeStamp +",Key:" + arr[0] + ",EventTime:" + timeStamp + ",前一条数据的水位线:" + currentWaterMark);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return timeStamp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; DataStream<Tuple3<String,String,String&amp;gt;&amp;gt; ds2 =stream2.map(new MapFunction<String, Tuple3<String,String,String&amp;gt;&amp;gt;() {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @Override
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Tuple3<String,String,String&amp;gt; map(String s2) throws Exception {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String [] arr = s2.split(" ");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return Tuple3.of(arr[0],arr[1],arr[2]);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp; });
&nbsp;&nbsp;&nbsp; ds2.print();
&nbsp;&nbsp;&nbsp; ds1.join(ds2).where(new KeySelector<Tuple3<String, String,String&amp;gt;,String&amp;gt;() {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @Override
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public String getKey(Tuple3<String, String,String&amp;gt; value) throws Exception {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return value.f0;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp; }).equalTo(new KeySelector<Tuple3<String, String ,String&amp;gt;, String&amp;gt;() {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @Override
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public String getKey(Tuple3<String, String,String&amp;gt; value) throws Exception {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return value.f0;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp; })
&nbsp;&nbsp;&nbsp; .window(TumblingEventTimeWindows.of(Time.seconds(3)))
&nbsp;&nbsp;&nbsp; .apply(new JoinFunction<Tuple3<String, String,String&amp;gt;, Tuple3<String, String,String&amp;gt;, String&amp;gt;() {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @Override
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public String join(Tuple3<String, String,String&amp;gt; value1, Tuple3<String, String,String&amp;gt; value2) throws Exception {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return value1.f1 + "=" + value2.f1;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp; }).print();
&nbsp;&nbsp;&nbsp; 结果如下:
&nbsp;&nbsp;&nbsp; currentTimeStamp: 1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
&nbsp;&nbsp;&nbsp; 4&amp;gt; (1,tom1,1000000055000)
&nbsp;&nbsp;&nbsp; currentTimeStamp: 1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
&nbsp;&nbsp;&nbsp; 4&amp;gt; (1,tom2,1000000056000)
&nbsp;&nbsp;&nbsp; currentTimeStamp: 1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
&nbsp;&nbsp;&nbsp; 3&amp;gt; (1,jerry1,1000000055000)
&nbsp;&nbsp;&nbsp; currentTimeStamp: 1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
&nbsp;&nbsp;&nbsp; 3&amp;gt; (1,jerry2,1000000056000)
&nbsp;&nbsp;&nbsp; 2&amp;gt; tom1=jerry1

Re: 回复: Flink双流Join问题

Posted by Djeng Lee <le...@gmail.com>.
 public static long getWindowStartWithOffset(long timestamp, long offset, long windowSize) {
 	return timestamp - (timestamp - offset + windowSize) % windowSize;
 }



在 2020/4/4 下午6:23,“忝忝向仧”<15...@qq.com> 写入:

    对,我只是回复把前面那串省略了,没写.
    [1000000053000,1000000056000),为什么是1000000053000开始?
    我第一条输入的是
    1,tom1,1000000055000
    
    
    ------------------&nbsp;原始邮件&nbsp;------------------
    发件人:&nbsp;"libenchao"<libenchao@gmail.com&gt;;
    发送时间:&nbsp;2020年4月4日(星期六) 晚上6:20
    收件人:&nbsp;"user-zh"<user-zh@flink.apache.org&gt;;
    
    主题:&nbsp;Re: Flink双流Join问题
    
    
    
    你的watermark不是56000,而是1000000056000吧。所以应该是[1000000053000,
    1000000056000)是一个窗口吧。
    
    忝忝向仧 <153488125@qq.com&gt; 于2020年4月4日周六 下午6:16写道:
    
    &gt; 下发新的?
    &gt;
    &gt;
    &gt; 4是一个kafka的source,3是另外一个kafka的source.
    &gt; 如果按照3秒的一个窗口
    &gt; watermark触发窗口的条件是watermark_time&amp;gt;=window_endtime
    &gt;
    &gt;
    &gt; 也就是说[55000,57000)应该是一个窗口的.
    &gt;
    &gt;
    &gt; 我是这么理解的,但是结果56000后就输出了
    &gt;
    &gt;
    &gt;
    &gt; currentTimeStamp:&amp;nbsp;1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
    &gt; 4&amp;gt; (1,tom1,1000000055000)
    &gt;
    &gt; currentTimeStamp:&amp;nbsp;1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
    &gt; 4&amp;gt; (1,tom2,1000000056000)
    &gt;
    &gt; currentTimeStamp:&amp;nbsp;1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
    &gt; 3&amp;gt; (1,jerry1,1000000055000)
    &gt;
    &gt; currentTimeStamp:&amp;nbsp;1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
    &gt; 3&amp;gt; (1,jerry2,1000000056000)
    &gt; 2&amp;gt; tom1=jerry1
    &gt;
    &gt;
    &gt;
    &gt;
    &gt;
    &gt;
    &gt;
    &gt; ------------------&amp;nbsp;原始邮件&amp;nbsp;------------------
    &gt; 发件人:&amp;nbsp;"lee.roval"<lee.roval@gmail.com&amp;gt;;
    &gt; 发送时间:&amp;nbsp;2020年4月4日(星期六) 晚上6:10
    &gt; 收件人:&amp;nbsp;"user-zh@flink.apache.org"<user-zh@flink.apache.org&amp;gt;;
    &gt;
    &gt; 主题:&amp;nbsp;Re: Flink双流Join问题
    &gt;
    &gt;
    &gt;
    &gt; 56000后不是下发新的watermark了嘛
    &gt;
    &gt; 在 2020/4/4 下午5:57,“忝忝向仧”<153488125@qq.com&amp;gt; 写入:
    &gt;
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 各位好:&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;
    &gt; Flink双流Join遇到一个问题,能否解释下,谢谢.
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;
    &gt; ds1和ds2分别读取kafka两个流数据,使用event time和watermark特性,3s的一个翻滚窗口,定义如下:
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;
    &gt; 最后,join输出的时候,为什么触发窗口的数据第二条就触发了?
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;
    &gt; 按照水印的触发条件应该是watermark_time&amp;amp;gt;=window_endtime.那么,这里应该是1000000057000这条数据来了后才会触发,但是结果却是56000就触发了.为什么?
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 定义的代码如下:
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; DataStream<String&amp;amp;gt; stream1 = env
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; .addSource(new FlinkKafkaConsumer09<String&amp;amp;gt;("stream1", new
    &gt; SimpleStringSchema(), properties).setStartFromLatest())
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; .assignTimestampsAndWatermarks(
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; new AssignerWithPeriodicWatermarks<String&amp;amp;gt;() {
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; long currentTimeStamp = 0L;
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; long maxDelayAllowed = 0L;
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; long currentWaterMark;
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; @Nullable
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; @Override
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; public Watermark getCurrentWatermark() {
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; currentWaterMark = currentTimeStamp-maxDelayAllowed;
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; return new Watermark(currentWaterMark);
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; }
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; @Override
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; public long extractTimestamp(String s, long l) {
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; String[] arr= s.split(" ");
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; long timeStamp = Long.parseLong(arr[2]);
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; currentTimeStamp = Math.max(timeStamp, currentTimeStamp);
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; System.out.println("currentTimeStamp: " +&amp;nbsp; currentTimeStamp +",Key:" +
    &gt; arr[0] + ",EventTime:" + timeStamp + ",前一条数据的水位线:" + currentWaterMark);
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; return timeStamp;
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; }
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; }
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; DataStream<Tuple3<String,String,String&amp;amp;gt;&amp;amp;gt;
    &gt; ds1 = stream1.map(new MapFunction<String,
    &gt; Tuple3<String,String,String&amp;amp;gt;&amp;amp;gt;() {
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Tuple3<String,
    &gt; String,String&amp;amp;gt; map(String s1) throws Exception {
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; String[] arr = s1.split(" ");
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return
    &gt; Tuple3.of(arr[0],arr[1],arr[2]);
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; });
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; ds1.print();
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; DataStream<String&amp;amp;gt; stream2 = env
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; .addSource(new FlinkKafkaConsumer09<String&amp;amp;gt;("stream2", new
    &gt; SimpleStringSchema(), properties).setStartFromLatest())
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; .assignTimestampsAndWatermarks(
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; new AssignerWithPeriodicWatermarks<String&amp;amp;gt;() {
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; long currentTimeStamp = 0L;
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; long maxDelayAllowed = 0L;
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; long currentWaterMark;
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; @Nullable
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; @Override
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; public Watermark getCurrentWatermark() {
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; currentWaterMark = currentTimeStamp-maxDelayAllowed;
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; return new Watermark(currentWaterMark);
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; }
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; @Override
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; public long extractTimestamp(String s, long l) {
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; String[] arr= s.split(" ");
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; long timeStamp = Long.parseLong(arr[2]);
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; currentTimeStamp = Math.max(timeStamp, currentTimeStamp);
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; System.out.println("currentTimeStamp: " +&amp;nbsp; currentTimeStamp +",Key:" +
    &gt; arr[0] + ",EventTime:" + timeStamp + ",前一条数据的水位线:" + currentWaterMark);
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; return timeStamp;
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; }
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; }
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; DataStream<Tuple3<String,String,String&amp;amp;gt;&amp;amp;gt;
    &gt; ds2 =stream2.map(new MapFunction<String,
    &gt; Tuple3<String,String,String&amp;amp;gt;&amp;amp;gt;() {
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public
    &gt; Tuple3<String,String,String&amp;amp;gt; map(String s2) throws Exception {
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String
    &gt; [] arr = s2.split(" ");
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return
    &gt; Tuple3.of(arr[0],arr[1],arr[2]);
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; });
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; ds2.print();
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; ds1.join(ds2).where(new KeySelector<Tuple3<String,
    &gt; String,String&amp;amp;gt;,String&amp;amp;gt;() {
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public String
    &gt; getKey(Tuple3<String, String,String&amp;amp;gt; value) throws Exception {
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return
    &gt; value.f0;
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; }).equalTo(new KeySelector<Tuple3<String, String
    &gt; ,String&amp;amp;gt;, String&amp;amp;gt;() {
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public String
    &gt; getKey(Tuple3<String, String,String&amp;amp;gt; value) throws Exception {
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return
    &gt; value.f0;
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; })
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; .window(TumblingEventTimeWindows.of(Time.seconds(3)))
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; .apply(new JoinFunction<Tuple3<String,
    &gt; String,String&amp;amp;gt;, Tuple3<String, String,String&amp;amp;gt;,
    &gt; String&amp;amp;gt;() {
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public String
    &gt; join(Tuple3<String, String,String&amp;amp;gt; value1, Tuple3<String,
    &gt; String,String&amp;amp;gt; value2) throws Exception {
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return
    &gt; value1.f1 + "=" + value2.f1;
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; }).print();
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 结果如下:
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; currentTimeStamp:
    &gt; 1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;amp;gt; (1,tom1,1000000055000)
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; currentTimeStamp:
    &gt; 1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;amp;gt; (1,tom2,1000000056000)
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; currentTimeStamp:
    &gt; 1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;amp;gt; (1,jerry1,1000000055000)
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; currentTimeStamp:
    &gt; 1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;amp;gt; (1,jerry2,1000000056000)
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;amp;gt; tom1=jerry1
    
    
    
    -- 
    
    Benchao Li
    School of Electronics Engineering and Computer Science, Peking University
    Tel:+86-15650713730
    Email: libenchao@gmail.com; libenchao@pku.edu.cn

Re: 回复: 回复: 回复: 回复: Flink双流Join问题

Posted by Djeng Lee <le...@gmail.com>.
你不是有个给kafka生产数据的脚本,生产数据时慢点,休眠1秒。

-》你用的是周期水印


在 2020/4/5 上午11:35,“忝忝向仧”<15...@qq.com> 写入:

    你的意思是说,在flink消费kafka时候,每条记录给个1秒休眠间隔?
    比如,这里加个休眠1秒?
    DataStream<String&gt; stream1 = env
            .addSource(new FlinkKafkaConsumer09<String&gt;("stream1", new SimpleStringSchema(), properties).
                    setStartFromLatest());
    
    
    
    
    
    
    ------------------&nbsp;原始邮件&nbsp;------------------
    发件人:&nbsp;"Djeng Lee"<lee.roval@gmail.com&gt;;
    发送时间:&nbsp;2020年4月5日(星期天) 中午11:26
    收件人:&nbsp;"user-zh@flink.apache.org"<user-zh@flink.apache.org&gt;;
    
    主题:&nbsp;Re: 回复: 回复: 回复: Flink双流Join问题
    
    
    
    给kafka吐数据时每条记录之间休眠1秒试试.
    
    
    文档位置
    https://ci.apache.org/projects/flink/flink-docs-release-1.10/zh/dev/event_timestamps_watermarks.html
    https://ci.apache.org/projects/flink/flink-docs-release-1.10/zh/dev/stream/operators/joining.html
    
    
    AssignerWithPeriodicWatermarks assigns timestamps and generates watermarks periodically (possibly depending on the stream elements, or purely based on processing time).
    
    The interval (every n milliseconds) in which the watermark will be generated is defined via ExecutionConfig.setAutoWatermarkInterval(...). The assigner’s getCurrentWatermark() method will be called each time, and a new watermark will be emitted if the returned watermark is non-null and larger than the previous watermark.
    
    Here we show two simple examples of timestamp assigners that use periodic watermark generation. Note that Flink ships with a BoundedOutOfOrdernessTimestampExtractor similar to the BoundedOutOfOrdernessGenerator shown below, which you can read about here.
    
    在 2020/4/5 上午10:21,“忝忝向仧”<153488125@qq.com&gt; 写入:
    
    &nbsp;&nbsp;&nbsp; Hi,
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 感觉有点不对,我试着用stream1输入:
    &nbsp;&nbsp;&nbsp; 1 tom1 1553503185000
    &nbsp;&nbsp;&nbsp; 1 tom2 1553503186000
    &nbsp;&nbsp;&nbsp; 1 tom3 1553503187000
    &nbsp;&nbsp;&nbsp; 1 tom4 1553503188000
    &nbsp;&nbsp;&nbsp; 1 tom_late 1553503185000
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; stream2输入:
    &nbsp;&nbsp;&nbsp; 1 jerry2 1553503186000
    &nbsp;&nbsp;&nbsp; 1 jerry3 1553503187000
    &nbsp;&nbsp;&nbsp; 1 jerry4 1553503188000
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 但是结果打印的是:
    &nbsp;&nbsp;&nbsp; currentTimeStamp: 1553503185000,Key:1,EventTime:1553503185000,前一条数据的水位线:0
    &nbsp;&nbsp;&nbsp; 4&amp;gt; (1,tom1,1553503185000)
    &nbsp;&nbsp;&nbsp; currentTimeStamp: 1553503186000,Key:1,EventTime:1553503186000,前一条数据的水位线:1553503185000
    &nbsp;&nbsp;&nbsp; 4&amp;gt; (1,tom2,1553503186000)
    &nbsp;&nbsp;&nbsp; currentTimeStamp: 1553503187000,Key:1,EventTime:1553503187000,前一条数据的水位线:1553503186000
    &nbsp;&nbsp;&nbsp; 4&amp;gt; (1,tom3,1553503187000)
    &nbsp;&nbsp;&nbsp; currentTimeStamp: 1553503188000,Key:1,EventTime:1553503188000,前一条数据的水位线:1553503187000
    &nbsp;&nbsp;&nbsp; 4&amp;gt; (1,tom4,1553503188000)
    &nbsp;&nbsp;&nbsp; currentTimeStamp: 1553503188000,Key:1,EventTime:1553503185000,前一条数据的水位线:1553503188000
    &nbsp;&nbsp;&nbsp; 4&amp;gt; (1,tom_late,1553503185000)
    &nbsp;&nbsp;&nbsp; currentTimeStamp: 1553503186000,Key:1,EventTime:1553503186000,前一条数据的水位线:0
    &nbsp;&nbsp;&nbsp; 3&amp;gt; (1,jerry2,1553503186000)
    &nbsp;&nbsp;&nbsp; currentTimeStamp: 1553503187000,Key:1,EventTime:1553503187000,前一条数据的水位线:1553503186000
    &nbsp;&nbsp;&nbsp; 3&amp;gt; (1,jerry3,1553503187000)
    &nbsp;&nbsp;&nbsp; currentTimeStamp: 1553503188000,Key:1,EventTime:1553503188000,前一条数据的水位线:1553503187000
    &nbsp;&nbsp;&nbsp; 3&amp;gt; (1,jerry4,1553503188000)
    &nbsp;&nbsp;&nbsp; 2&amp;gt; tom1=jerry2
    &nbsp;&nbsp;&nbsp; 2&amp;gt; tom1=jerry3
    &nbsp;&nbsp;&nbsp; 2&amp;gt; tom2=jerry2
    &nbsp;&nbsp;&nbsp; 2&amp;gt; tom2=jerry3
    &nbsp;&nbsp;&nbsp; 2&amp;gt; tom3=jerry2
    &nbsp;&nbsp;&nbsp; 2&amp;gt; tom3=jerry3
    &nbsp;&nbsp;&nbsp; 2&amp;gt; tom_late=jerry2
    &nbsp;&nbsp;&nbsp; 2&amp;gt; tom_late=jerry3
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 我第二个流的窗口是[1553503186000,1553503188000),怎么判断出stream1中那条迟到的是没过期的?
    &nbsp;&nbsp;&nbsp; 谢谢.
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; ------------------&amp;nbsp;原始邮件&amp;nbsp;------------------
    &nbsp;&nbsp;&nbsp; 发件人:&amp;nbsp;"libenchao"<libenchao@gmail.com&amp;gt;;
    &nbsp;&nbsp;&nbsp; 发送时间:&amp;nbsp;2020年4月5日(星期天) 上午10:04
    &nbsp;&nbsp;&nbsp; 收件人:&amp;nbsp;"user-zh"<user-zh@flink.apache.org&amp;gt;;
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 主题:&amp;nbsp;Re: 回复: 回复: Flink双流Join问题
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 嗯,可以这么理解。
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 忝忝向仧 <153488125@qq.com&amp;gt; 于2020年4月4日周六 下午11:20写道:
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;gt; 额,明白了,意思是说两个流情况下
    &nbsp;&nbsp;&nbsp; &amp;gt; 比如,stream1里面晚来的那条
    &nbsp;&nbsp;&nbsp; &amp;gt; 1 tom_late 1553503185000的水印是1553503188000
    &nbsp;&nbsp;&nbsp; &amp;gt; 但是stream2里面,这条1,jerry1,1553503185000的水印是1553503185000
    &nbsp;&nbsp;&nbsp; &amp;gt; 所以取最小的,因此还是会被打印?
    &nbsp;&nbsp;&nbsp; &amp;gt; 是这么理解么?
    &nbsp;&nbsp;&nbsp; &amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; ------------------&amp;amp;nbsp;原始邮件&amp;amp;nbsp;------------------
    &nbsp;&nbsp;&nbsp; &amp;gt; 发件人:&amp;amp;nbsp;"libenchao"<libenchao@gmail.com&amp;amp;gt;;
    &nbsp;&nbsp;&nbsp; &amp;gt; 发送时间:&amp;amp;nbsp;2020年4月4日(星期六) 晚上11:04
    &nbsp;&nbsp;&nbsp; &amp;gt; 收件人:&amp;amp;nbsp;"user-zh"<user-zh@flink.apache.org&amp;amp;gt;;
    &nbsp;&nbsp;&nbsp; &amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; 主题:&amp;amp;nbsp;Re: 回复: 回复: Flink双流Join问题
    &nbsp;&nbsp;&nbsp; &amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; 两个stream输入的场景,operator的watermark是取两者的最小值。
    &nbsp;&nbsp;&nbsp; &amp;gt; 所以虽然这条数据在第一个流里面看起来已经是肯定迟到了,但是有可能看第二个流的watermark它还没有过期。
    &nbsp;&nbsp;&nbsp; &amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; 忝忝向仧 <153488125@qq.com&amp;amp;gt; 于2020年4月4日周六 下午10:42写道:
    &nbsp;&nbsp;&nbsp; &amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; Hi:
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp; &amp;amp;amp;nbsp; 还有个疑问,我特意构造了个乱序的消息,还是3秒一个窗口
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; stream1:
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 1 tom1 1553503185000
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 1 tom2 1553503186000
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 1 tom3 1553503187000
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 1 tom4 1553503188000
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 1 tom_late 1553503185000
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; stream2:
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 1 jerry1 1553503185000
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 1 jerry2 1553503186000
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 1 jerry3 1553503187000
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 1 jerry4 1553503188000
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 我代码还是之前的代码,定义水印都是maxDelayAllowed = 0L;也就是没有设置最大延时时间.
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 那么,tom_late这条乱序,在第一个窗口[1553503185000,1553503188000)内不应该被输出吧?
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 但是结果还是输出了,这个是为什么?
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;gt; 1553503185000,Key:1,EventTime:1553503185000,前一条数据的水位线:0
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 4&amp;amp;amp;gt; (1,tom1,1553503185000)
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 1553503186000,Key:1,EventTime:1553503186000,前一条数据的水位线:1553503185000
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 4&amp;amp;amp;gt; (1,tom2,1553503186000)
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 1553503187000,Key:1,EventTime:1553503187000,前一条数据的水位线:1553503186000
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 4&amp;amp;amp;gt; (1,tom3,1553503187000)
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 1553503188000,Key:1,EventTime:1553503188000,前一条数据的水位线:1553503187000
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 4&amp;amp;amp;gt; (1,tom4,1553503188000)
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 1553503188000,Key:1,EventTime:1553503185000,前一条数据的水位线:1553503188000
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 4&amp;amp;amp;gt; (1,tom_late,1553503185000)
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 1553503189000,Key:2,EventTime:1553503189000,前一条数据的水位线:1553503188000
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 4&amp;amp;amp;gt; (2,tom5,1553503189000)
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 1553503191000,Key:2,EventTime:1553503191000,前一条数据的水位线:1553503189000
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 4&amp;amp;amp;gt; (2,tom6,1553503191000)
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 1553503192000,Key:2,EventTime:1553503192000,前一条数据的水位线:1553503191000
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 4&amp;amp;amp;gt; (2,tom7,1553503192000)
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 1553503193000,Key:2,EventTime:1553503193000,前一条数据的水位线:1553503192000
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 4&amp;amp;amp;gt; (2,tom8,1553503193000)
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;gt; 1553503185000,Key:1,EventTime:1553503185000,前一条数据的水位线:0
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 3&amp;amp;amp;gt; (1,jerry1,1553503185000)
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 1553503186000,Key:1,EventTime:1553503186000,前一条数据的水位线:1553503185000
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 3&amp;amp;amp;gt; (1,jerry2,1553503186000)
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 1553503187000,Key:1,EventTime:1553503187000,前一条数据的水位线:1553503186000
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 3&amp;amp;amp;gt; (1,jerry3,1553503187000)
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 1553503188000,Key:1,EventTime:1553503188000,前一条数据的水位线:1553503187000
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 3&amp;amp;amp;gt; (1,jerry4,1553503188000)
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 2&amp;amp;amp;gt; tom1=jerry1
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 2&amp;amp;amp;gt; tom1=jerry2
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 2&amp;amp;amp;gt; tom1=jerry3
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 2&amp;amp;amp;gt; tom2=jerry1
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 2&amp;amp;amp;gt; tom2=jerry2
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 2&amp;amp;amp;gt; tom2=jerry3
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 2&amp;amp;amp;gt; tom3=jerry1
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 2&amp;amp;amp;gt; tom3=jerry2
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 2&amp;amp;amp;gt; tom3=jerry3
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 2&amp;amp;amp;gt; tom_late=jerry1
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 2&amp;amp;amp;gt; tom_late=jerry2
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 2&amp;amp;amp;gt; tom_late=jerry3
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; ------------------&amp;amp;amp;nbsp;原始邮件&amp;amp;amp;nbsp;------------------
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 发件人:&amp;amp;amp;nbsp;"Djeng Lee"<lee.roval@gmail.com&amp;amp;amp;gt;;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 发送时间:&amp;amp;amp;nbsp;2020年4月4日(星期六) 晚上6:35
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 收件人:&amp;amp;amp;nbsp;"user-zh@flink.apache.org"<user-zh@flink.apache.org
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;gt;;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 主题:&amp;amp;amp;nbsp;Re: 回复: 回复: Flink双流Join问题
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 刚刚我说的不严谨
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; Start = 1000000055000 - (1000000055000 - 0 + 3000) % 3000 =
    &nbsp;&nbsp;&nbsp; &amp;gt; 1000000053000
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; End = 1000000053000 + 3000
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; //源码位置,所以窗口开端并不是你传入首条记录的作为开端。窗口划分是从0时间戳切过来的。
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 文档说明:
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; https://ci.apache.org/projects/flink/flink-docs-release-1.10/zh/dev/event_timestamps_watermarks.html
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 相关代码
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; public static long getWindowStartWithOffset(long timestamp, long
    &nbsp;&nbsp;&nbsp; &amp;gt; offset,
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; long windowSize) {
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;nbsp; return timestamp - (timestamp - offset + windowSize)
    &nbsp;&nbsp;&nbsp; &amp;gt; % windowSize;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; }
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 在 2020/4/4 下午6:30,“忝忝向仧”<153488125@qq.com&amp;amp;amp;gt; 写入:
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 额,你的意思是滚动3秒的窗口开始和结束应该是
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 1000000055000 % 3 得出结果再拿到[start,end).
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 比如1000000055000 % 3
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 的结果是1000000053000,那么窗口是[1000000053000,1000000056000)
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 是这么理解吧
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; ------------------&amp;amp;amp;amp;nbsp;原始邮件&amp;amp;amp;amp;nbsp;------------------
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 发件人:&amp;amp;amp;amp;nbsp;"lee.roval"<
    &nbsp;&nbsp;&nbsp; &amp;gt; lee.roval@gmail.com&amp;amp;amp;amp;gt;;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 发送时间:&amp;amp;amp;amp;nbsp;2020年4月4日(星期六)
    &nbsp;&nbsp;&nbsp; &amp;gt; 晚上6:25
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 收件人:&amp;amp;amp;amp;nbsp;"
    &nbsp;&nbsp;&nbsp; &amp;gt; user-zh@flink.apache.org"<
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; user-zh@flink.apache.org&amp;amp;amp;amp;gt;;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 主题:&amp;amp;amp;amp;nbsp;Re: 回复: Flink双流Join问题
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 55000的窗口分配,是对windowSize 求模然后拿到start 和
    &nbsp;&nbsp;&nbsp; &amp;gt; end。 不是从你首条记录开始算。
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 在 2020/4/4 下午6:23,“忝忝向仧”<
    &nbsp;&nbsp;&nbsp; &amp;gt; 153488125@qq.com&amp;amp;amp;amp;gt; 写入:
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; 对,我只是回复把前面那串省略了,没写.
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; [1000000053000,1000000056000),为什么是1000000053000开始?
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; 我第一条输入的是
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; 1,tom1,1000000055000
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; ------------------&amp;amp;amp;amp;amp;nbsp;原始邮件&amp;amp;amp;amp;amp;nbsp;------------------
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 发件人:&amp;amp;amp;amp;amp;nbsp;"libenchao"<libenchao@gmail.com
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;gt;;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 发送时间:&amp;amp;amp;amp;amp;nbsp;2020年4月4日(星期六) 晚上6:20
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 收件人:&amp;amp;amp;amp;amp;nbsp;"user-zh"<user-zh@flink.apache.org
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;gt;;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; 主题:&amp;amp;amp;amp;amp;nbsp;Re:
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; Flink双流Join问题
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 你的watermark不是56000,而是1000000056000吧。所以应该是[1000000053000,
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; 1000000056000)是一个窗口吧。
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; 忝忝向仧 <153488125@qq.com
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 于2020年4月4日周六 下午6:16写道:
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; 下发新的?
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 4是一个kafka的source,3是另外一个kafka的source.
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; 如果按照3秒的一个窗口
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; watermark触发窗口的条件是watermark_time&amp;amp;amp;amp;amp;amp;gt;=window_endtime
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 也就是说[55000,57000)应该是一个窗口的.
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 我是这么理解的,但是结果56000后就输出了
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; currentTimeStamp:&amp;amp;amp;amp;amp;amp;nbsp;1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 4&amp;amp;amp;amp;amp;amp;gt; (1,tom1,1000000055000)
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; currentTimeStamp:&amp;amp;amp;amp;amp;amp;nbsp;1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 4&amp;amp;amp;amp;amp;amp;gt; (1,tom2,1000000056000)
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; currentTimeStamp:&amp;amp;amp;amp;amp;amp;nbsp;1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 3&amp;amp;amp;amp;amp;amp;gt; (1,jerry1,1000000055000)
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; currentTimeStamp:&amp;amp;amp;amp;amp;amp;nbsp;1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 3&amp;amp;amp;amp;amp;amp;gt; (1,jerry2,1000000056000)
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 2&amp;amp;amp;amp;amp;amp;gt; tom1=jerry1
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; ------------------&amp;amp;amp;amp;amp;amp;nbsp;原始邮件&amp;amp;amp;amp;amp;amp;nbsp;------------------
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 发件人:&amp;amp;amp;amp;amp;amp;nbsp;"lee.roval"<lee.roval@gmail.com
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;gt;;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 发送时间:&amp;amp;amp;amp;amp;amp;nbsp;2020年4月4日(星期六) 晚上6:10
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 收件人:&amp;amp;amp;amp;amp;amp;nbsp;"user-zh@flink.apache.org"<
    &nbsp;&nbsp;&nbsp; &amp;gt; user-zh@flink.apache.org
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;gt;;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 主题:&amp;amp;amp;amp;amp;amp;nbsp;Re: Flink双流Join问题
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 56000后不是下发新的watermark了嘛
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; 在 2020/4/4
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 下午5:57,“忝忝向仧”<153488125@qq.com&amp;amp;amp;amp;amp;amp;gt; 写入:
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 各位好:&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; Flink双流Join遇到一个问题,能否解释下,谢谢.
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; ds1和ds2分别读取kafka两个流数据,使用event time和watermark特性,3s的一个翻滚窗口,定义如下:
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 最后,join输出的时候,为什么触发窗口的数据第二条就触发了?
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; 按照水印的触发条件应该是watermark_time&amp;amp;amp;amp;amp;amp;amp;gt;=window_endtime.那么,这里应该是1000000057000这条数据来了后才会触发,但是结果却是56000就触发了.为什么?
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; 定义的代码如下:
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; DataStream<String&amp;amp;amp;amp;amp;amp;amp;gt; stream1 = env
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; .addSource(new
    &nbsp;&nbsp;&nbsp; &amp;gt; FlinkKafkaConsumer09<String&amp;amp;amp;amp;amp;amp;amp;gt;("stream1",
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; new
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; SimpleStringSchema(), properties).setStartFromLatest())
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; .assignTimestampsAndWatermarks(
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; new
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; AssignerWithPeriodicWatermarks<String&amp;amp;amp;amp;amp;amp;amp;gt;() {
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; long
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; currentTimeStamp = 0L;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; long
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; maxDelayAllowed = 0L;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; long
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; currentWaterMark;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; @Nullable
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; @Override
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; public
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; Watermark getCurrentWatermark() {
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; currentWaterMark = currentTimeStamp-maxDelayAllowed;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; return new
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; Watermark(currentWaterMark);
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; }
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; @Override
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; public long
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; extractTimestamp(String s, long l) {
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; String[]
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; arr= s.split(" ");
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; long
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; timeStamp = Long.parseLong(arr[2]);
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; currentTimeStamp = Math.max(timeStamp, currentTimeStamp);
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; System.out.println("currentTimeStamp: " +&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; currentTimeStamp +",Key:" +
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; arr[0] +
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; ",EventTime:" + timeStamp + ",前一条数据的水位线:" + currentWaterMark);
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; return
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; timeStamp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; }
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; }
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; );
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; DataStream<Tuple3<String,String,String&amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; ds1 =
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; stream1.map(new MapFunction<String,
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; Tuple3<String,String,String&amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;gt;()
    &nbsp;&nbsp;&nbsp; &amp;gt; {
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; @Override
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; public Tuple3<String,
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; String,String&amp;amp;amp;amp;amp;amp;amp;gt; map(String s1) throws Exception
    &nbsp;&nbsp;&nbsp; &amp;gt; {
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; String[]
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; arr = s1.split(" ");
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; return
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; Tuple3.of(arr[0],arr[1],arr[2]);
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; }
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; });
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; ds1.print();
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; DataStream<String&amp;amp;amp;amp;amp;amp;amp;gt; stream2 = env
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; .addSource(new
    &nbsp;&nbsp;&nbsp; &amp;gt; FlinkKafkaConsumer09<String&amp;amp;amp;amp;amp;amp;amp;gt;("stream2",
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; new
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; SimpleStringSchema(), properties).setStartFromLatest())
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; .assignTimestampsAndWatermarks(
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; new
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; AssignerWithPeriodicWatermarks<String&amp;amp;amp;amp;amp;amp;amp;gt;() {
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; long
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; currentTimeStamp = 0L;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; long
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; maxDelayAllowed = 0L;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; long
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; currentWaterMark;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; @Nullable
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; @Override
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; public
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; Watermark getCurrentWatermark() {
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; currentWaterMark = currentTimeStamp-maxDelayAllowed;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; return new
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; Watermark(currentWaterMark);
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; }
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; @Override
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; public long
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; extractTimestamp(String s, long l) {
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; String[]
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; arr= s.split(" ");
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; long
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; timeStamp = Long.parseLong(arr[2]);
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; currentTimeStamp = Math.max(timeStamp, currentTimeStamp);
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; System.out.println("currentTimeStamp: " +&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; currentTimeStamp +",Key:" +
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; arr[0] +
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; ",EventTime:" + timeStamp + ",前一条数据的水位线:" + currentWaterMark);
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; return
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; timeStamp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; }
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; }
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; );
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; DataStream<Tuple3<String,String,String&amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; ds2
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; =stream2.map(new MapFunction<String,
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; Tuple3<String,String,String&amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;gt;()
    &nbsp;&nbsp;&nbsp; &amp;gt; {
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; @Override
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; public
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; Tuple3<String,String,String&amp;amp;amp;amp;amp;amp;amp;gt; map(String s2)
    &nbsp;&nbsp;&nbsp; &amp;gt; throws
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; Exception {
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; String
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; [] arr =
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; s2.split(" ");
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; return
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; Tuple3.of(arr[0],arr[1],arr[2]);
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; }
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; });
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; ds2.print();
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; ds1.join(ds2).where(new KeySelector<Tuple3<String,
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; String,String&amp;amp;amp;amp;amp;amp;amp;gt;,String&amp;amp;amp;amp;amp;amp;amp;gt;() {
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; @Override
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; public String
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; getKey(Tuple3<String, String,String&amp;amp;amp;amp;amp;amp;amp;gt; value)
    &nbsp;&nbsp;&nbsp; &amp;gt; throws
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; Exception {
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; return
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; value.f0;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; }
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; }).equalTo(new
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; KeySelector<Tuple3<String, String
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; ,String&amp;amp;amp;amp;amp;amp;amp;gt;, String&amp;amp;amp;amp;amp;amp;amp;gt;() {
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; @Override
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; public String
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; getKey(Tuple3<String, String,String&amp;amp;amp;amp;amp;amp;amp;gt; value)
    &nbsp;&nbsp;&nbsp; &amp;gt; throws
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; Exception {
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; return
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; value.f0;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; }
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; })
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; .window(TumblingEventTimeWindows.of(Time.seconds(3)))
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; .apply(new
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; JoinFunction<Tuple3<String,
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; String,String&amp;amp;amp;amp;amp;amp;amp;gt;, Tuple3<String,
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; String,String&amp;amp;amp;amp;amp;amp;amp;gt;,
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; String&amp;amp;amp;amp;amp;amp;amp;gt;() {
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; @Override
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; public String
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; join(Tuple3<String, String,String&amp;amp;amp;amp;amp;amp;amp;gt; value1,
    &nbsp;&nbsp;&nbsp; &amp;gt; Tuple3<String,
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; String,String&amp;amp;amp;amp;amp;amp;amp;gt; value2) throws Exception {
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; return
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; value1.f1 +
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; "=" + value2.f1;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; }
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; }).print();
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; 结果如下:
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 4&amp;amp;amp;amp;amp;amp;amp;gt; (1,tom1,1000000055000)
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 4&amp;amp;amp;amp;amp;amp;amp;gt; (1,tom2,1000000056000)
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 3&amp;amp;amp;amp;amp;amp;amp;gt; (1,jerry1,1000000055000)
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 3&amp;amp;amp;amp;amp;amp;amp;gt; (1,jerry2,1000000056000)
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 2&amp;amp;amp;amp;amp;amp;amp;gt; tom1=jerry1
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; --
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; Benchao Li
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; School of Electronics
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; Engineering and Computer Science, Peking University
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; Tel:+86-15650713730
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; Email:
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; libenchao@gmail.com; libenchao@pku.edu.cn
    &nbsp;&nbsp;&nbsp; &amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; --
    &nbsp;&nbsp;&nbsp; &amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; Benchao Li
    &nbsp;&nbsp;&nbsp; &amp;gt; School of Electronics Engineering and Computer Science, Peking University
    &nbsp;&nbsp;&nbsp; &amp;gt; Tel:+86-15650713730
    &nbsp;&nbsp;&nbsp; &amp;gt; Email: libenchao@gmail.com; libenchao@pku.edu.cn
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; -- 
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; Benchao Li
    &nbsp;&nbsp;&nbsp; School of Electronics Engineering and Computer Science, Peking University
    &nbsp;&nbsp;&nbsp; Tel:+86-15650713730
    &nbsp;&nbsp;&nbsp; Email: libenchao@gmail.com; libenchao@pku.edu.cn

Re: 回复: 回复: 回复: 回复: 回复: 回复: Flink双流Join问题

Posted by Djeng Lee <le...@gmail.com>.
看看这一段

The creation of pairwise combinations of elements of the two streams behaves like an inner-join, meaning elements from one stream will not be emitted if they don’t have a corresponding element from the other stream to be joined with.
Those elements that do get joined will have as their timestamp the largest timestamp that still lies in the respective window. For example a window with [5, 10) as its boundaries would result in the joined elements having 9 as their timestamp.
In the following section we are going to give an overview over how different kinds of window joins behave using some exemplary scenarios.


在 2020/4/5 上午11:47,“忝忝向仧”<15...@qq.com> 写入:

    好像跟这个休眠没啥关系,结果还是一样的
    
    
    
    
    ------------------&nbsp;原始邮件&nbsp;------------------
    发件人:&nbsp;"Djeng Lee"<lee.roval@gmail.com&gt;;
    发送时间:&nbsp;2020年4月5日(星期天) 中午11:45
    收件人:&nbsp;"user-zh@flink.apache.org"<user-zh@flink.apache.org&gt;;
    
    主题:&nbsp;Re: 回复: 回复: 回复: 回复: 回复: Flink双流Join问题
    
    
    
    那那忽略我吧
    
    在 2020/4/5 上午11:42,“忝忝向仧”<153488125@qq.com&gt; 写入:
    
    &nbsp;&nbsp;&nbsp; 额,我是直接在kafka客户端手动输入数据的.
    &nbsp;&nbsp;&nbsp; 那我输入慢点看看.
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; ./kafka-console-producer.sh --broker-list xx.xx.xx.xx:9092 --topic stream2
    &nbsp;&nbsp;&nbsp; &amp;gt;1 jerry2 1553503186000
    &nbsp;&nbsp;&nbsp; &amp;gt;1 jerry3 1553503187000
    &nbsp;&nbsp;&nbsp; &amp;gt;1 jerry4 1553503188000
    &nbsp;&nbsp;&nbsp; &amp;gt;1 jerry1 1553503189000
    &nbsp;&nbsp;&nbsp; &amp;gt;1 jerry4 1553503188000
    &nbsp;&nbsp;&nbsp; &amp;gt;1 jerry1 1553503189000
    &nbsp;&nbsp;&nbsp; &amp;gt;1 jerry2 1553503191000
    &nbsp;&nbsp;&nbsp; &amp;gt;1 jerry3 1553503192000
    &nbsp;&nbsp;&nbsp; &amp;gt;
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; ------------------&amp;nbsp;原始邮件&amp;nbsp;------------------
    &nbsp;&nbsp;&nbsp; 发件人:&amp;nbsp;"Djeng Lee"<lee.roval@gmail.com&amp;gt;;
    &nbsp;&nbsp;&nbsp; 发送时间:&amp;nbsp;2020年4月5日(星期天) 中午11:39
    &nbsp;&nbsp;&nbsp; 收件人:&amp;nbsp;"user-zh@flink.apache.org"<user-zh@flink.apache.org&amp;gt;;
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 主题:&amp;nbsp;Re: 回复: 回复: 回复: 回复: Flink双流Join问题
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 你不是有个给kafka生产数据的脚本,生产数据时慢点,休眠1秒。
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; -》你用的是周期水印
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 在 2020/4/5 上午11:35,“忝忝向仧”<153488125@qq.com&amp;gt; 写入:
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 你的意思是说,在flink消费kafka时候,每条记录给个1秒休眠间隔?
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 比如,这里加个休眠1秒?
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; DataStream<String&amp;amp;gt; stream1 = env
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .addSource(new FlinkKafkaConsumer09<String&amp;amp;gt;("stream1", new SimpleStringSchema(), properties).
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setStartFromLatest());
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ------------------&amp;amp;nbsp;原始邮件&amp;amp;nbsp;------------------
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 发件人:&amp;amp;nbsp;"Djeng Lee"<lee.roval@gmail.com&amp;amp;gt;;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 发送时间:&amp;amp;nbsp;2020年4月5日(星期天) 中午11:26
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 收件人:&amp;amp;nbsp;"user-zh@flink.apache.org"<user-zh@flink.apache.org&amp;amp;gt;;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 主题:&amp;amp;nbsp;Re: 回复: 回复: 回复: Flink双流Join问题
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 给kafka吐数据时每条记录之间休眠1秒试试.
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 文档位置
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; https://ci.apache.org/projects/flink/flink-docs-release-1.10/zh/dev/event_timestamps_watermarks.html
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; https://ci.apache.org/projects/flink/flink-docs-release-1.10/zh/dev/stream/operators/joining.html
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; AssignerWithPeriodicWatermarks assigns timestamps and generates watermarks periodically (possibly depending on the stream elements, or purely based on processing time).
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; The interval (every n milliseconds) in which the watermark will be generated is defined via ExecutionConfig.setAutoWatermarkInterval(...). The assigner’s getCurrentWatermark() method will be called each time, and a new watermark will be emitted if the returned watermark is non-null and larger than the previous watermark.
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Here we show two simple examples of timestamp assigners that use periodic watermark generation. Note that Flink ships with a BoundedOutOfOrdernessTimestampExtractor similar to the BoundedOutOfOrdernessGenerator shown below, which you can read about here.
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 在 2020/4/5 上午10:21,“忝忝向仧”<153488125@qq.com&amp;amp;gt; 写入:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Hi,
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 感觉有点不对,我试着用stream1输入:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 1 tom1 1553503185000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 1 tom2 1553503186000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 1 tom3 1553503187000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 1 tom4 1553503188000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 1 tom_late 1553503185000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; stream2输入:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 1 jerry2 1553503186000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 1 jerry3 1553503187000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 1 jerry4 1553503188000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 但是结果打印的是:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; currentTimeStamp: 1553503185000,Key:1,EventTime:1553503185000,前一条数据的水位线:0
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 4&amp;amp;amp;gt; (1,tom1,1553503185000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; currentTimeStamp: 1553503186000,Key:1,EventTime:1553503186000,前一条数据的水位线:1553503185000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 4&amp;amp;amp;gt; (1,tom2,1553503186000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; currentTimeStamp: 1553503187000,Key:1,EventTime:1553503187000,前一条数据的水位线:1553503186000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 4&amp;amp;amp;gt; (1,tom3,1553503187000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; currentTimeStamp: 1553503188000,Key:1,EventTime:1553503188000,前一条数据的水位线:1553503187000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 4&amp;amp;amp;gt; (1,tom4,1553503188000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; currentTimeStamp: 1553503188000,Key:1,EventTime:1553503185000,前一条数据的水位线:1553503188000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 4&amp;amp;amp;gt; (1,tom_late,1553503185000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; currentTimeStamp: 1553503186000,Key:1,EventTime:1553503186000,前一条数据的水位线:0
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 3&amp;amp;amp;gt; (1,jerry2,1553503186000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; currentTimeStamp: 1553503187000,Key:1,EventTime:1553503187000,前一条数据的水位线:1553503186000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 3&amp;amp;amp;gt; (1,jerry3,1553503187000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; currentTimeStamp: 1553503188000,Key:1,EventTime:1553503188000,前一条数据的水位线:1553503187000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 3&amp;amp;amp;gt; (1,jerry4,1553503188000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 2&amp;amp;amp;gt; tom1=jerry2
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 2&amp;amp;amp;gt; tom1=jerry3
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 2&amp;amp;amp;gt; tom2=jerry2
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 2&amp;amp;amp;gt; tom2=jerry3
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 2&amp;amp;amp;gt; tom3=jerry2
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 2&amp;amp;amp;gt; tom3=jerry3
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 2&amp;amp;amp;gt; tom_late=jerry2
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 2&amp;amp;amp;gt; tom_late=jerry3
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 我第二个流的窗口是[1553503186000,1553503188000),怎么判断出stream1中那条迟到的是没过期的?
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 谢谢.
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; ------------------&amp;amp;amp;nbsp;原始邮件&amp;amp;amp;nbsp;------------------
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 发件人:&amp;amp;amp;nbsp;"libenchao"<libenchao@gmail.com&amp;amp;amp;gt;;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 发送时间:&amp;amp;amp;nbsp;2020年4月5日(星期天) 上午10:04
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 收件人:&amp;amp;amp;nbsp;"user-zh"<user-zh@flink.apache.org&amp;amp;amp;gt;;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 主题:&amp;amp;amp;nbsp;Re: 回复: 回复: Flink双流Join问题
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 嗯,可以这么理解。
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 忝忝向仧 <153488125@qq.com&amp;amp;amp;gt; 于2020年4月4日周六 下午11:20写道:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; 额,明白了,意思是说两个流情况下
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; 比如,stream1里面晚来的那条
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; 1 tom_late 1553503185000的水印是1553503188000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; 但是stream2里面,这条1,jerry1,1553503185000的水印是1553503185000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; 所以取最小的,因此还是会被打印?
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; 是这么理解么?
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; ------------------&amp;amp;amp;amp;nbsp;原始邮件&amp;amp;amp;amp;nbsp;------------------
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; 发件人:&amp;amp;amp;amp;nbsp;"libenchao"<libenchao@gmail.com&amp;amp;amp;amp;gt;;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; 发送时间:&amp;amp;amp;amp;nbsp;2020年4月4日(星期六) 晚上11:04
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; 收件人:&amp;amp;amp;amp;nbsp;"user-zh"<user-zh@flink.apache.org&amp;amp;amp;amp;gt;;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; 主题:&amp;amp;amp;amp;nbsp;Re: 回复: 回复: Flink双流Join问题
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; 两个stream输入的场景,operator的watermark是取两者的最小值。
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; 所以虽然这条数据在第一个流里面看起来已经是肯定迟到了,但是有可能看第二个流的watermark它还没有过期。
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; 忝忝向仧 <153488125@qq.com&amp;amp;amp;amp;gt; 于2020年4月4日周六 下午10:42写道:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; Hi:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;nbsp; 还有个疑问,我特意构造了个乱序的消息,还是3秒一个窗口
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; stream1:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 1 tom1 1553503185000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 1 tom2 1553503186000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 1 tom3 1553503187000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 1 tom4 1553503188000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 1 tom_late 1553503185000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; stream2:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 1 jerry1 1553503185000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 1 jerry2 1553503186000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 1 jerry3 1553503187000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 1 jerry4 1553503188000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 我代码还是之前的代码,定义水印都是maxDelayAllowed = 0L;也就是没有设置最大延时时间.
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 那么,tom_late这条乱序,在第一个窗口[1553503185000,1553503188000)内不应该被输出吧?
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 但是结果还是输出了,这个是为什么?
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; 1553503185000,Key:1,EventTime:1553503185000,前一条数据的水位线:0
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 4&amp;amp;amp;amp;amp;gt; (1,tom1,1553503185000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 1553503186000,Key:1,EventTime:1553503186000,前一条数据的水位线:1553503185000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 4&amp;amp;amp;amp;amp;gt; (1,tom2,1553503186000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 1553503187000,Key:1,EventTime:1553503187000,前一条数据的水位线:1553503186000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 4&amp;amp;amp;amp;amp;gt; (1,tom3,1553503187000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 1553503188000,Key:1,EventTime:1553503188000,前一条数据的水位线:1553503187000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 4&amp;amp;amp;amp;amp;gt; (1,tom4,1553503188000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 1553503188000,Key:1,EventTime:1553503185000,前一条数据的水位线:1553503188000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 4&amp;amp;amp;amp;amp;gt; (1,tom_late,1553503185000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 1553503189000,Key:2,EventTime:1553503189000,前一条数据的水位线:1553503188000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 4&amp;amp;amp;amp;amp;gt; (2,tom5,1553503189000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 1553503191000,Key:2,EventTime:1553503191000,前一条数据的水位线:1553503189000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 4&amp;amp;amp;amp;amp;gt; (2,tom6,1553503191000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 1553503192000,Key:2,EventTime:1553503192000,前一条数据的水位线:1553503191000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 4&amp;amp;amp;amp;amp;gt; (2,tom7,1553503192000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 1553503193000,Key:2,EventTime:1553503193000,前一条数据的水位线:1553503192000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 4&amp;amp;amp;amp;amp;gt; (2,tom8,1553503193000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; 1553503185000,Key:1,EventTime:1553503185000,前一条数据的水位线:0
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 3&amp;amp;amp;amp;amp;gt; (1,jerry1,1553503185000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 1553503186000,Key:1,EventTime:1553503186000,前一条数据的水位线:1553503185000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 3&amp;amp;amp;amp;amp;gt; (1,jerry2,1553503186000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 1553503187000,Key:1,EventTime:1553503187000,前一条数据的水位线:1553503186000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 3&amp;amp;amp;amp;amp;gt; (1,jerry3,1553503187000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 1553503188000,Key:1,EventTime:1553503188000,前一条数据的水位线:1553503187000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 3&amp;amp;amp;amp;amp;gt; (1,jerry4,1553503188000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 2&amp;amp;amp;amp;amp;gt; tom1=jerry1
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 2&amp;amp;amp;amp;amp;gt; tom1=jerry2
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 2&amp;amp;amp;amp;amp;gt; tom1=jerry3
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 2&amp;amp;amp;amp;amp;gt; tom2=jerry1
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 2&amp;amp;amp;amp;amp;gt; tom2=jerry2
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 2&amp;amp;amp;amp;amp;gt; tom2=jerry3
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 2&amp;amp;amp;amp;amp;gt; tom3=jerry1
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 2&amp;amp;amp;amp;amp;gt; tom3=jerry2
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 2&amp;amp;amp;amp;amp;gt; tom3=jerry3
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 2&amp;amp;amp;amp;amp;gt; tom_late=jerry1
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 2&amp;amp;amp;amp;amp;gt; tom_late=jerry2
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 2&amp;amp;amp;amp;amp;gt; tom_late=jerry3
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; ------------------&amp;amp;amp;amp;amp;nbsp;原始邮件&amp;amp;amp;amp;amp;nbsp;------------------
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 发件人:&amp;amp;amp;amp;amp;nbsp;"Djeng Lee"<lee.roval@gmail.com&amp;amp;amp;amp;amp;gt;;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 发送时间:&amp;amp;amp;amp;amp;nbsp;2020年4月4日(星期六) 晚上6:35
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 收件人:&amp;amp;amp;amp;amp;nbsp;"user-zh@flink.apache.org"<user-zh@flink.apache.org
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 主题:&amp;amp;amp;amp;amp;nbsp;Re: 回复: 回复: Flink双流Join问题
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 刚刚我说的不严谨
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; Start = 1000000055000 - (1000000055000 - 0 + 3000) % 3000 =
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; 1000000053000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; End = 1000000053000 + 3000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; //源码位置,所以窗口开端并不是你传入首条记录的作为开端。窗口划分是从0时间戳切过来的。
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 文档说明:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; https://ci.apache.org/projects/flink/flink-docs-release-1.10/zh/dev/event_timestamps_watermarks.html
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 相关代码
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; public static long getWindowStartWithOffset(long timestamp, long
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; offset,
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; long windowSize) {
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; return timestamp - (timestamp - offset + windowSize)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; % windowSize;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; }
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 在 2020/4/4 下午6:30,“忝忝向仧”<153488125@qq.com&amp;amp;amp;amp;amp;gt; 写入:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; 额,你的意思是滚动3秒的窗口开始和结束应该是
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; 1000000055000 % 3 得出结果再拿到[start,end).
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; 比如1000000055000 % 3
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 的结果是1000000053000,那么窗口是[1000000053000,1000000056000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; 是这么理解吧
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; ------------------&amp;amp;amp;amp;amp;amp;nbsp;原始邮件&amp;amp;amp;amp;amp;amp;nbsp;------------------
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; 发件人:&amp;amp;amp;amp;amp;amp;nbsp;"lee.roval"<
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; lee.roval@gmail.com&amp;amp;amp;amp;amp;amp;gt;;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; 发送时间:&amp;amp;amp;amp;amp;amp;nbsp;2020年4月4日(星期六)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; 晚上6:25
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; 收件人:&amp;amp;amp;amp;amp;amp;nbsp;"
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; user-zh@flink.apache.org"<
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; user-zh@flink.apache.org&amp;amp;amp;amp;amp;amp;gt;;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; 主题:&amp;amp;amp;amp;amp;amp;nbsp;Re: 回复: Flink双流Join问题
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; 55000的窗口分配,是对windowSize 求模然后拿到start 和
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; end。 不是从你首条记录开始算。
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; 在 2020/4/4 下午6:23,“忝忝向仧”<
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; 153488125@qq.com&amp;amp;amp;amp;amp;amp;gt; 写入:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; 对,我只是回复把前面那串省略了,没写.
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; [1000000053000,1000000056000),为什么是1000000053000开始?
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; 我第一条输入的是
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; 1,tom1,1000000055000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; ------------------&amp;amp;amp;amp;amp;amp;amp;nbsp;原始邮件&amp;amp;amp;amp;amp;amp;amp;nbsp;------------------
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 发件人:&amp;amp;amp;amp;amp;amp;amp;nbsp;"libenchao"<libenchao@gmail.com
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;gt;;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 发送时间:&amp;amp;amp;amp;amp;amp;amp;nbsp;2020年4月4日(星期六) 晚上6:20
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 收件人:&amp;amp;amp;amp;amp;amp;amp;nbsp;"user-zh"<user-zh@flink.apache.org
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;gt;;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; 主题:&amp;amp;amp;amp;amp;amp;amp;nbsp;Re:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; Flink双流Join问题
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 你的watermark不是56000,而是1000000056000吧。所以应该是[1000000053000,
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; 1000000056000)是一个窗口吧。
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; 忝忝向仧 <153488125@qq.com
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 于2020年4月4日周六 下午6:16写道:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; 下发新的?
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 4是一个kafka的source,3是另外一个kafka的source.
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; 如果按照3秒的一个窗口
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; watermark触发窗口的条件是watermark_time&amp;amp;amp;amp;amp;amp;amp;amp;gt;=window_endtime
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 也就是说[55000,57000)应该是一个窗口的.
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 我是这么理解的,但是结果56000后就输出了
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; currentTimeStamp:&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 4&amp;amp;amp;amp;amp;amp;amp;amp;gt; (1,tom1,1000000055000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; currentTimeStamp:&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 4&amp;amp;amp;amp;amp;amp;amp;amp;gt; (1,tom2,1000000056000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; currentTimeStamp:&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 3&amp;amp;amp;amp;amp;amp;amp;amp;gt; (1,jerry1,1000000055000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; currentTimeStamp:&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 3&amp;amp;amp;amp;amp;amp;amp;amp;gt; (1,jerry2,1000000056000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 2&amp;amp;amp;amp;amp;amp;amp;amp;gt; tom1=jerry1
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; ------------------&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;原始邮件&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;------------------
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 发件人:&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;"lee.roval"<lee.roval@gmail.com
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;gt;;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 发送时间:&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;2020年4月4日(星期六) 晚上6:10
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 收件人:&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;"user-zh@flink.apache.org"<
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; user-zh@flink.apache.org
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;gt;;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 主题:&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;Re: Flink双流Join问题
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 56000后不是下发新的watermark了嘛
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; 在 2020/4/4
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 下午5:57,“忝忝向仧”<153488125@qq.com&amp;amp;amp;amp;amp;amp;amp;amp;gt; 写入:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 各位好:&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; Flink双流Join遇到一个问题,能否解释下,谢谢.
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; ds1和ds2分别读取kafka两个流数据,使用event time和watermark特性,3s的一个翻滚窗口,定义如下:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 最后,join输出的时候,为什么触发窗口的数据第二条就触发了?
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; 按照水印的触发条件应该是watermark_time&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;=window_endtime.那么,这里应该是1000000057000这条数据来了后才会触发,但是结果却是56000就触发了.为什么?
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; 定义的代码如下:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; DataStream<String&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; stream1 = env
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; .addSource(new
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; FlinkKafkaConsumer09<String&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;("stream1",
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; new
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; SimpleStringSchema(), properties).setStartFromLatest())
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; .assignTimestampsAndWatermarks(
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; new
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; AssignerWithPeriodicWatermarks<String&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;() {
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; long
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; currentTimeStamp = 0L;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; long
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; maxDelayAllowed = 0L;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; long
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; currentWaterMark;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; @Nullable
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; @Override
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; public
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; Watermark getCurrentWatermark() {
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; currentWaterMark = currentTimeStamp-maxDelayAllowed;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; return new
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; Watermark(currentWaterMark);
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; }
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; @Override
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; public long
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; extractTimestamp(String s, long l) {
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; String[]
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; arr= s.split(" ");
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; long
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; timeStamp = Long.parseLong(arr[2]);
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; currentTimeStamp = Math.max(timeStamp, currentTimeStamp);
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; System.out.println("currentTimeStamp: " +&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; currentTimeStamp +",Key:" +
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; arr[0] +
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; ",EventTime:" + timeStamp + ",前一条数据的水位线:" + currentWaterMark);
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; return
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; timeStamp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; }
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; }
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; );
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; DataStream<Tuple3<String,String,String&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; ds1 =
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; stream1.map(new MapFunction<String,
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; Tuple3<String,String,String&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;()
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; {
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; @Override
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; public Tuple3<String,
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; String,String&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; map(String s1) throws Exception
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; {
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; String[]
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; arr = s1.split(" ");
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; return
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; Tuple3.of(arr[0],arr[1],arr[2]);
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; }
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp; });
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; ds1.print();
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; DataStream<String&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; stream2 = env
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; .addSource(new
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; FlinkKafkaConsumer09<String&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;("stream2",
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; new
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; SimpleStringSchema(), properties).setStartFromLatest())
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; .assignTimestampsAndWatermarks(
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; new
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; AssignerWithPeriodicWatermarks<String&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;() {
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; long
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; currentTimeStamp = 0L;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; long
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; maxDelayAllowed = 0L;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; long
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; currentWaterMark;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; @Nullable
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; @Override
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; public
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; Watermark getCurrentWatermark() {
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; currentWaterMark = currentTimeStamp-maxDelayAllowed;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; return new
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; Watermark(currentWaterMark);
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; }
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; @Override
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; public long
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; extractTimestamp(String s, long l) {
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; String[]
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; arr= s.split(" ");
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; long
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; timeStamp = Long.parseLong(arr[2]);
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; currentTimeStamp = Math.max(timeStamp, currentTimeStamp);
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; System.out.println("currentTimeStamp: " +&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; currentTimeStamp +",Key:" +
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; arr[0] +
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; ",EventTime:" + timeStamp + ",前一条数据的水位线:" + currentWaterMark);
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; return
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; timeStamp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; }
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; }
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; );
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; DataStream<Tuple3<String,String,String&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; ds2
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; =stream2.map(new MapFunction<String,
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; Tuple3<String,String,String&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;()
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; {
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; @Override
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; public
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; Tuple3<String,String,String&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; map(String s2)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; throws
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; Exception {
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; String
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; [] arr =
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; s2.split(" ");
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; return
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; Tuple3.of(arr[0],arr[1],arr[2]);
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; }
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp; });
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; ds2.print();
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; ds1.join(ds2).where(new KeySelector<Tuple3<String,
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; String,String&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;,String&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;() {
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; @Override
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; public String
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; getKey(Tuple3<String, String,String&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; value)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; throws
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; Exception {
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; return
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; value.f0;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; }
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; }).equalTo(new
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; KeySelector<Tuple3<String, String
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; ,String&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;, String&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;() {
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; @Override
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; public String
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; getKey(Tuple3<String, String,String&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; value)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; throws
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; Exception {
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; return
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; value.f0;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; }
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp; })
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; .window(TumblingEventTimeWindows.of(Time.seconds(3)))
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; .apply(new
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; JoinFunction<Tuple3<String,
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; String,String&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;, Tuple3<String,
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; String,String&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;,
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; String&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;() {
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; @Override
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; public String
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; join(Tuple3<String, String,String&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; value1,
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; Tuple3<String,
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; String,String&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; value2) throws Exception {
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; return
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; value1.f1 +
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; "=" + value2.f1;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; }
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; }).print();
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; 结果如下:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 4&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; (1,tom1,1000000055000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 4&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; (1,tom2,1000000056000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 3&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; (1,jerry1,1000000055000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 3&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; (1,jerry2,1000000056000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 2&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; tom1=jerry1
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; --
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; Benchao Li
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; School of Electronics
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; Engineering and Computer Science, Peking University
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; Tel:+86-15650713730
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; Email:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; libenchao@gmail.com; libenchao@pku.edu.cn
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; --
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; Benchao Li
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; School of Electronics Engineering and Computer Science, Peking University
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; Tel:+86-15650713730
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; Email: libenchao@gmail.com; libenchao@pku.edu.cn
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; -- 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Benchao Li
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; School of Electronics Engineering and Computer Science, Peking University
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Tel:+86-15650713730
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Email: libenchao@gmail.com; libenchao@pku.edu.cn

Re: 回复: 回复: 回复: 回复: 回复: Flink双流Join问题

Posted by Djeng Lee <le...@gmail.com>.
那那忽略我吧

在 2020/4/5 上午11:42,“忝忝向仧”<15...@qq.com> 写入:

    额,我是直接在kafka客户端手动输入数据的.
    那我输入慢点看看.
    
    
    ./kafka-console-producer.sh --broker-list xx.xx.xx.xx:9092 --topic stream2
    &gt;1 jerry2 1553503186000
    &gt;1 jerry3 1553503187000
    &gt;1 jerry4 1553503188000
    &gt;1 jerry1 1553503189000
    &gt;1 jerry4 1553503188000
    &gt;1 jerry1 1553503189000
    &gt;1 jerry2 1553503191000
    &gt;1 jerry3 1553503192000
    &gt;
    
    
    
    
    
    
    
    
    
    
    
    ------------------&nbsp;原始邮件&nbsp;------------------
    发件人:&nbsp;"Djeng Lee"<lee.roval@gmail.com&gt;;
    发送时间:&nbsp;2020年4月5日(星期天) 中午11:39
    收件人:&nbsp;"user-zh@flink.apache.org"<user-zh@flink.apache.org&gt;;
    
    主题:&nbsp;Re: 回复: 回复: 回复: 回复: Flink双流Join问题
    
    
    
    你不是有个给kafka生产数据的脚本,生产数据时慢点,休眠1秒。
    
    -》你用的是周期水印
    
    
    在 2020/4/5 上午11:35,“忝忝向仧”<153488125@qq.com&gt; 写入:
    
    &nbsp;&nbsp;&nbsp; 你的意思是说,在flink消费kafka时候,每条记录给个1秒休眠间隔?
    &nbsp;&nbsp;&nbsp; 比如,这里加个休眠1秒?
    &nbsp;&nbsp;&nbsp; DataStream<String&amp;gt; stream1 = env
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .addSource(new FlinkKafkaConsumer09<String&amp;gt;("stream1", new SimpleStringSchema(), properties).
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setStartFromLatest());
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; ------------------&amp;nbsp;原始邮件&amp;nbsp;------------------
    &nbsp;&nbsp;&nbsp; 发件人:&amp;nbsp;"Djeng Lee"<lee.roval@gmail.com&amp;gt;;
    &nbsp;&nbsp;&nbsp; 发送时间:&amp;nbsp;2020年4月5日(星期天) 中午11:26
    &nbsp;&nbsp;&nbsp; 收件人:&amp;nbsp;"user-zh@flink.apache.org"<user-zh@flink.apache.org&amp;gt;;
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 主题:&amp;nbsp;Re: 回复: 回复: 回复: Flink双流Join问题
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 给kafka吐数据时每条记录之间休眠1秒试试.
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 文档位置
    &nbsp;&nbsp;&nbsp; https://ci.apache.org/projects/flink/flink-docs-release-1.10/zh/dev/event_timestamps_watermarks.html
    &nbsp;&nbsp;&nbsp; https://ci.apache.org/projects/flink/flink-docs-release-1.10/zh/dev/stream/operators/joining.html
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; AssignerWithPeriodicWatermarks assigns timestamps and generates watermarks periodically (possibly depending on the stream elements, or purely based on processing time).
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; The interval (every n milliseconds) in which the watermark will be generated is defined via ExecutionConfig.setAutoWatermarkInterval(...). The assigner’s getCurrentWatermark() method will be called each time, and a new watermark will be emitted if the returned watermark is non-null and larger than the previous watermark.
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; Here we show two simple examples of timestamp assigners that use periodic watermark generation. Note that Flink ships with a BoundedOutOfOrdernessTimestampExtractor similar to the BoundedOutOfOrdernessGenerator shown below, which you can read about here.
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 在 2020/4/5 上午10:21,“忝忝向仧”<153488125@qq.com&amp;gt; 写入:
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Hi,
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 感觉有点不对,我试着用stream1输入:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1 tom1 1553503185000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1 tom2 1553503186000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1 tom3 1553503187000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1 tom4 1553503188000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1 tom_late 1553503185000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; stream2输入:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1 jerry2 1553503186000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1 jerry3 1553503187000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1 jerry4 1553503188000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 但是结果打印的是:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; currentTimeStamp: 1553503185000,Key:1,EventTime:1553503185000,前一条数据的水位线:0
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;amp;gt; (1,tom1,1553503185000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; currentTimeStamp: 1553503186000,Key:1,EventTime:1553503186000,前一条数据的水位线:1553503185000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;amp;gt; (1,tom2,1553503186000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; currentTimeStamp: 1553503187000,Key:1,EventTime:1553503187000,前一条数据的水位线:1553503186000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;amp;gt; (1,tom3,1553503187000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; currentTimeStamp: 1553503188000,Key:1,EventTime:1553503188000,前一条数据的水位线:1553503187000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;amp;gt; (1,tom4,1553503188000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; currentTimeStamp: 1553503188000,Key:1,EventTime:1553503185000,前一条数据的水位线:1553503188000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;amp;gt; (1,tom_late,1553503185000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; currentTimeStamp: 1553503186000,Key:1,EventTime:1553503186000,前一条数据的水位线:0
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;amp;gt; (1,jerry2,1553503186000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; currentTimeStamp: 1553503187000,Key:1,EventTime:1553503187000,前一条数据的水位线:1553503186000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;amp;gt; (1,jerry3,1553503187000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; currentTimeStamp: 1553503188000,Key:1,EventTime:1553503188000,前一条数据的水位线:1553503187000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;amp;gt; (1,jerry4,1553503188000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;amp;gt; tom1=jerry2
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;amp;gt; tom1=jerry3
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;amp;gt; tom2=jerry2
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;amp;gt; tom2=jerry3
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;amp;gt; tom3=jerry2
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;amp;gt; tom3=jerry3
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;amp;gt; tom_late=jerry2
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;amp;gt; tom_late=jerry3
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 我第二个流的窗口是[1553503186000,1553503188000),怎么判断出stream1中那条迟到的是没过期的?
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 谢谢.
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ------------------&amp;amp;nbsp;原始邮件&amp;amp;nbsp;------------------
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 发件人:&amp;amp;nbsp;"libenchao"<libenchao@gmail.com&amp;amp;gt;;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 发送时间:&amp;amp;nbsp;2020年4月5日(星期天) 上午10:04
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 收件人:&amp;amp;nbsp;"user-zh"<user-zh@flink.apache.org&amp;amp;gt;;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 主题:&amp;amp;nbsp;Re: 回复: 回复: Flink双流Join问题
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 嗯,可以这么理解。
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 忝忝向仧 <153488125@qq.com&amp;amp;gt; 于2020年4月4日周六 下午11:20写道:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 额,明白了,意思是说两个流情况下
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 比如,stream1里面晚来的那条
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 1 tom_late 1553503185000的水印是1553503188000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 但是stream2里面,这条1,jerry1,1553503185000的水印是1553503185000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 所以取最小的,因此还是会被打印?
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 是这么理解么?
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; ------------------&amp;amp;amp;nbsp;原始邮件&amp;amp;amp;nbsp;------------------
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 发件人:&amp;amp;amp;nbsp;"libenchao"<libenchao@gmail.com&amp;amp;amp;gt;;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 发送时间:&amp;amp;amp;nbsp;2020年4月4日(星期六) 晚上11:04
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 收件人:&amp;amp;amp;nbsp;"user-zh"<user-zh@flink.apache.org&amp;amp;amp;gt;;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 主题:&amp;amp;amp;nbsp;Re: 回复: 回复: Flink双流Join问题
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 两个stream输入的场景,operator的watermark是取两者的最小值。
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 所以虽然这条数据在第一个流里面看起来已经是肯定迟到了,但是有可能看第二个流的watermark它还没有过期。
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 忝忝向仧 <153488125@qq.com&amp;amp;amp;gt; 于2020年4月4日周六 下午10:42写道:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; Hi:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp; 还有个疑问,我特意构造了个乱序的消息,还是3秒一个窗口
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; stream1:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 1 tom1 1553503185000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 1 tom2 1553503186000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 1 tom3 1553503187000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 1 tom4 1553503188000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 1 tom_late 1553503185000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; stream2:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 1 jerry1 1553503185000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 1 jerry2 1553503186000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 1 jerry3 1553503187000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 1 jerry4 1553503188000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 我代码还是之前的代码,定义水印都是maxDelayAllowed = 0L;也就是没有设置最大延时时间.
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 那么,tom_late这条乱序,在第一个窗口[1553503185000,1553503188000)内不应该被输出吧?
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 但是结果还是输出了,这个是为什么?
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 1553503185000,Key:1,EventTime:1553503185000,前一条数据的水位线:0
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 4&amp;amp;amp;amp;gt; (1,tom1,1553503185000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 1553503186000,Key:1,EventTime:1553503186000,前一条数据的水位线:1553503185000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 4&amp;amp;amp;amp;gt; (1,tom2,1553503186000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 1553503187000,Key:1,EventTime:1553503187000,前一条数据的水位线:1553503186000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 4&amp;amp;amp;amp;gt; (1,tom3,1553503187000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 1553503188000,Key:1,EventTime:1553503188000,前一条数据的水位线:1553503187000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 4&amp;amp;amp;amp;gt; (1,tom4,1553503188000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 1553503188000,Key:1,EventTime:1553503185000,前一条数据的水位线:1553503188000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 4&amp;amp;amp;amp;gt; (1,tom_late,1553503185000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 1553503189000,Key:2,EventTime:1553503189000,前一条数据的水位线:1553503188000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 4&amp;amp;amp;amp;gt; (2,tom5,1553503189000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 1553503191000,Key:2,EventTime:1553503191000,前一条数据的水位线:1553503189000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 4&amp;amp;amp;amp;gt; (2,tom6,1553503191000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 1553503192000,Key:2,EventTime:1553503192000,前一条数据的水位线:1553503191000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 4&amp;amp;amp;amp;gt; (2,tom7,1553503192000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 1553503193000,Key:2,EventTime:1553503193000,前一条数据的水位线:1553503192000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 4&amp;amp;amp;amp;gt; (2,tom8,1553503193000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 1553503185000,Key:1,EventTime:1553503185000,前一条数据的水位线:0
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 3&amp;amp;amp;amp;gt; (1,jerry1,1553503185000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 1553503186000,Key:1,EventTime:1553503186000,前一条数据的水位线:1553503185000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 3&amp;amp;amp;amp;gt; (1,jerry2,1553503186000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 1553503187000,Key:1,EventTime:1553503187000,前一条数据的水位线:1553503186000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 3&amp;amp;amp;amp;gt; (1,jerry3,1553503187000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 1553503188000,Key:1,EventTime:1553503188000,前一条数据的水位线:1553503187000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 3&amp;amp;amp;amp;gt; (1,jerry4,1553503188000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 2&amp;amp;amp;amp;gt; tom1=jerry1
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 2&amp;amp;amp;amp;gt; tom1=jerry2
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 2&amp;amp;amp;amp;gt; tom1=jerry3
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 2&amp;amp;amp;amp;gt; tom2=jerry1
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 2&amp;amp;amp;amp;gt; tom2=jerry2
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 2&amp;amp;amp;amp;gt; tom2=jerry3
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 2&amp;amp;amp;amp;gt; tom3=jerry1
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 2&amp;amp;amp;amp;gt; tom3=jerry2
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 2&amp;amp;amp;amp;gt; tom3=jerry3
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 2&amp;amp;amp;amp;gt; tom_late=jerry1
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 2&amp;amp;amp;amp;gt; tom_late=jerry2
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 2&amp;amp;amp;amp;gt; tom_late=jerry3
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; ------------------&amp;amp;amp;amp;nbsp;原始邮件&amp;amp;amp;amp;nbsp;------------------
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 发件人:&amp;amp;amp;amp;nbsp;"Djeng Lee"<lee.roval@gmail.com&amp;amp;amp;amp;gt;;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 发送时间:&amp;amp;amp;amp;nbsp;2020年4月4日(星期六) 晚上6:35
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 收件人:&amp;amp;amp;amp;nbsp;"user-zh@flink.apache.org"<user-zh@flink.apache.org
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;gt;;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 主题:&amp;amp;amp;amp;nbsp;Re: 回复: 回复: Flink双流Join问题
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 刚刚我说的不严谨
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; Start = 1000000055000 - (1000000055000 - 0 + 3000) % 3000 =
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 1000000053000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; End = 1000000053000 + 3000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; //源码位置,所以窗口开端并不是你传入首条记录的作为开端。窗口划分是从0时间戳切过来的。
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 文档说明:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; https://ci.apache.org/projects/flink/flink-docs-release-1.10/zh/dev/event_timestamps_watermarks.html
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 相关代码
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; public static long getWindowStartWithOffset(long timestamp, long
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; offset,
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; long windowSize) {
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;nbsp; return timestamp - (timestamp - offset + windowSize)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; % windowSize;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; }
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 在 2020/4/4 下午6:30,“忝忝向仧”<153488125@qq.com&amp;amp;amp;amp;gt; 写入:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; 额,你的意思是滚动3秒的窗口开始和结束应该是
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; 1000000055000 % 3 得出结果再拿到[start,end).
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; 比如1000000055000 % 3
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 的结果是1000000053000,那么窗口是[1000000053000,1000000056000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; 是这么理解吧
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; ------------------&amp;amp;amp;amp;amp;nbsp;原始邮件&amp;amp;amp;amp;amp;nbsp;------------------
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; 发件人:&amp;amp;amp;amp;amp;nbsp;"lee.roval"<
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; lee.roval@gmail.com&amp;amp;amp;amp;amp;gt;;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; 发送时间:&amp;amp;amp;amp;amp;nbsp;2020年4月4日(星期六)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 晚上6:25
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; 收件人:&amp;amp;amp;amp;amp;nbsp;"
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; user-zh@flink.apache.org"<
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; user-zh@flink.apache.org&amp;amp;amp;amp;amp;gt;;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; 主题:&amp;amp;amp;amp;amp;nbsp;Re: 回复: Flink双流Join问题
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; 55000的窗口分配,是对windowSize 求模然后拿到start 和
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; end。 不是从你首条记录开始算。
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; 在 2020/4/4 下午6:23,“忝忝向仧”<
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 153488125@qq.com&amp;amp;amp;amp;amp;gt; 写入:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; 对,我只是回复把前面那串省略了,没写.
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; [1000000053000,1000000056000),为什么是1000000053000开始?
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; 我第一条输入的是
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; 1,tom1,1000000055000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; ------------------&amp;amp;amp;amp;amp;amp;nbsp;原始邮件&amp;amp;amp;amp;amp;amp;nbsp;------------------
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 发件人:&amp;amp;amp;amp;amp;amp;nbsp;"libenchao"<libenchao@gmail.com
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;gt;;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 发送时间:&amp;amp;amp;amp;amp;amp;nbsp;2020年4月4日(星期六) 晚上6:20
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 收件人:&amp;amp;amp;amp;amp;amp;nbsp;"user-zh"<user-zh@flink.apache.org
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;gt;;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; 主题:&amp;amp;amp;amp;amp;amp;nbsp;Re:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; Flink双流Join问题
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 你的watermark不是56000,而是1000000056000吧。所以应该是[1000000053000,
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; 1000000056000)是一个窗口吧。
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; 忝忝向仧 <153488125@qq.com
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 于2020年4月4日周六 下午6:16写道:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; 下发新的?
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 4是一个kafka的source,3是另外一个kafka的source.
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; 如果按照3秒的一个窗口
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; watermark触发窗口的条件是watermark_time&amp;amp;amp;amp;amp;amp;amp;gt;=window_endtime
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 也就是说[55000,57000)应该是一个窗口的.
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 我是这么理解的,但是结果56000后就输出了
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; currentTimeStamp:&amp;amp;amp;amp;amp;amp;amp;nbsp;1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 4&amp;amp;amp;amp;amp;amp;amp;gt; (1,tom1,1000000055000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; currentTimeStamp:&amp;amp;amp;amp;amp;amp;amp;nbsp;1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 4&amp;amp;amp;amp;amp;amp;amp;gt; (1,tom2,1000000056000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; currentTimeStamp:&amp;amp;amp;amp;amp;amp;amp;nbsp;1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 3&amp;amp;amp;amp;amp;amp;amp;gt; (1,jerry1,1000000055000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; currentTimeStamp:&amp;amp;amp;amp;amp;amp;amp;nbsp;1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 3&amp;amp;amp;amp;amp;amp;amp;gt; (1,jerry2,1000000056000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 2&amp;amp;amp;amp;amp;amp;amp;gt; tom1=jerry1
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; ------------------&amp;amp;amp;amp;amp;amp;amp;nbsp;原始邮件&amp;amp;amp;amp;amp;amp;amp;nbsp;------------------
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 发件人:&amp;amp;amp;amp;amp;amp;amp;nbsp;"lee.roval"<lee.roval@gmail.com
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;gt;;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 发送时间:&amp;amp;amp;amp;amp;amp;amp;nbsp;2020年4月4日(星期六) 晚上6:10
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 收件人:&amp;amp;amp;amp;amp;amp;amp;nbsp;"user-zh@flink.apache.org"<
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; user-zh@flink.apache.org
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;gt;;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 主题:&amp;amp;amp;amp;amp;amp;amp;nbsp;Re: Flink双流Join问题
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 56000后不是下发新的watermark了嘛
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; 在 2020/4/4
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 下午5:57,“忝忝向仧”<153488125@qq.com&amp;amp;amp;amp;amp;amp;amp;gt; 写入:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 各位好:&amp;amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; Flink双流Join遇到一个问题,能否解释下,谢谢.
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; ds1和ds2分别读取kafka两个流数据,使用event time和watermark特性,3s的一个翻滚窗口,定义如下:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 最后,join输出的时候,为什么触发窗口的数据第二条就触发了?
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 按照水印的触发条件应该是watermark_time&amp;amp;amp;amp;amp;amp;amp;amp;gt;=window_endtime.那么,这里应该是1000000057000这条数据来了后才会触发,但是结果却是56000就触发了.为什么?
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 定义的代码如下:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; DataStream<String&amp;amp;amp;amp;amp;amp;amp;amp;gt; stream1 = env
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; .addSource(new
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; FlinkKafkaConsumer09<String&amp;amp;amp;amp;amp;amp;amp;amp;gt;("stream1",
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; new
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; SimpleStringSchema(), properties).setStartFromLatest())
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; .assignTimestampsAndWatermarks(
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; new
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; AssignerWithPeriodicWatermarks<String&amp;amp;amp;amp;amp;amp;amp;amp;gt;() {
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; long
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; currentTimeStamp = 0L;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; long
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; maxDelayAllowed = 0L;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; long
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; currentWaterMark;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; @Nullable
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; @Override
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; public
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; Watermark getCurrentWatermark() {
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; currentWaterMark = currentTimeStamp-maxDelayAllowed;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; return new
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; Watermark(currentWaterMark);
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; }
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; @Override
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; public long
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; extractTimestamp(String s, long l) {
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; String[]
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; arr= s.split(" ");
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; long
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; timeStamp = Long.parseLong(arr[2]);
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; currentTimeStamp = Math.max(timeStamp, currentTimeStamp);
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; System.out.println("currentTimeStamp: " +&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; currentTimeStamp +",Key:" +
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; arr[0] +
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; ",EventTime:" + timeStamp + ",前一条数据的水位线:" + currentWaterMark);
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; return
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; timeStamp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; }
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; }
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; );
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; DataStream<Tuple3<String,String,String&amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; ds1 =
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; stream1.map(new MapFunction<String,
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; Tuple3<String,String,String&amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;gt;()
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; {
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; @Override
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; public Tuple3<String,
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; String,String&amp;amp;amp;amp;amp;amp;amp;amp;gt; map(String s1) throws Exception
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; {
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; String[]
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; arr = s1.split(" ");
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; return
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; Tuple3.of(arr[0],arr[1],arr[2]);
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; }
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; });
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; ds1.print();
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; DataStream<String&amp;amp;amp;amp;amp;amp;amp;amp;gt; stream2 = env
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; .addSource(new
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; FlinkKafkaConsumer09<String&amp;amp;amp;amp;amp;amp;amp;amp;gt;("stream2",
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; new
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; SimpleStringSchema(), properties).setStartFromLatest())
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; .assignTimestampsAndWatermarks(
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; new
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; AssignerWithPeriodicWatermarks<String&amp;amp;amp;amp;amp;amp;amp;amp;gt;() {
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; long
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; currentTimeStamp = 0L;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; long
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; maxDelayAllowed = 0L;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; long
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; currentWaterMark;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; @Nullable
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; @Override
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; public
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; Watermark getCurrentWatermark() {
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; currentWaterMark = currentTimeStamp-maxDelayAllowed;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; return new
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; Watermark(currentWaterMark);
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; }
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; @Override
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; public long
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; extractTimestamp(String s, long l) {
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; String[]
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; arr= s.split(" ");
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; long
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; timeStamp = Long.parseLong(arr[2]);
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; currentTimeStamp = Math.max(timeStamp, currentTimeStamp);
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; System.out.println("currentTimeStamp: " +&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; currentTimeStamp +",Key:" +
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; arr[0] +
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; ",EventTime:" + timeStamp + ",前一条数据的水位线:" + currentWaterMark);
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; return
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; timeStamp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; }
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; }
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; );
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; DataStream<Tuple3<String,String,String&amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; ds2
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; =stream2.map(new MapFunction<String,
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; Tuple3<String,String,String&amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;gt;()
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; {
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; @Override
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; public
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; Tuple3<String,String,String&amp;amp;amp;amp;amp;amp;amp;amp;gt; map(String s2)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; throws
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; Exception {
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; String
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; [] arr =
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; s2.split(" ");
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; return
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; Tuple3.of(arr[0],arr[1],arr[2]);
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; }
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; });
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; ds2.print();
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; ds1.join(ds2).where(new KeySelector<Tuple3<String,
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; String,String&amp;amp;amp;amp;amp;amp;amp;amp;gt;,String&amp;amp;amp;amp;amp;amp;amp;amp;gt;() {
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; @Override
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; public String
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; getKey(Tuple3<String, String,String&amp;amp;amp;amp;amp;amp;amp;amp;gt; value)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; throws
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; Exception {
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; return
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; value.f0;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; }
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; }).equalTo(new
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; KeySelector<Tuple3<String, String
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; ,String&amp;amp;amp;amp;amp;amp;amp;amp;gt;, String&amp;amp;amp;amp;amp;amp;amp;amp;gt;() {
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; @Override
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; public String
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; getKey(Tuple3<String, String,String&amp;amp;amp;amp;amp;amp;amp;amp;gt; value)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; throws
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; Exception {
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; return
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; value.f0;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; }
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; })
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; .window(TumblingEventTimeWindows.of(Time.seconds(3)))
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; .apply(new
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; JoinFunction<Tuple3<String,
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; String,String&amp;amp;amp;amp;amp;amp;amp;amp;gt;, Tuple3<String,
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; String,String&amp;amp;amp;amp;amp;amp;amp;amp;gt;,
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; String&amp;amp;amp;amp;amp;amp;amp;amp;gt;() {
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; @Override
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; public String
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; join(Tuple3<String, String,String&amp;amp;amp;amp;amp;amp;amp;amp;gt; value1,
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; Tuple3<String,
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; String,String&amp;amp;amp;amp;amp;amp;amp;amp;gt; value2) throws Exception {
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; return
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; value1.f1 +
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; "=" + value2.f1;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; }
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; }).print();
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 结果如下:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 4&amp;amp;amp;amp;amp;amp;amp;amp;gt; (1,tom1,1000000055000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 4&amp;amp;amp;amp;amp;amp;amp;amp;gt; (1,tom2,1000000056000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 3&amp;amp;amp;amp;amp;amp;amp;amp;gt; (1,jerry1,1000000055000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 3&amp;amp;amp;amp;amp;amp;amp;amp;gt; (1,jerry2,1000000056000)
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 2&amp;amp;amp;amp;amp;amp;amp;amp;gt; tom1=jerry1
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; --
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; Benchao Li
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; School of Electronics
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; Engineering and Computer Science, Peking University
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; Tel:+86-15650713730
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; Email:
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; libenchao@gmail.com; libenchao@pku.edu.cn
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; --
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; Benchao Li
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; School of Electronics Engineering and Computer Science, Peking University
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; Tel:+86-15650713730
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; Email: libenchao@gmail.com; libenchao@pku.edu.cn
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Benchao Li
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; School of Electronics Engineering and Computer Science, Peking University
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Tel:+86-15650713730
    &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Email: libenchao@gmail.com; libenchao@pku.edu.cn

回复: 回复: 回复: 回复: 回复: 回复: 回复: Flink双流Join问题

Posted by 忝忝向仧 <15...@qq.com>.
meaning elements from one stream will not be emitted if they don’t have a corresponding element from the other stream to be joined with.
一个流里面的元素只要与另外一个流的能关联的就会触发.
那这么理解的话,双流里面跟水印没啥关系了?
我不知道我这么理解对不对.


------------------&nbsp;原始邮件&nbsp;------------------
发件人:&nbsp;"Djeng Lee"<lee.roval@gmail.com&gt;;
发送时间:&nbsp;2020年4月5日(星期天) 中午11:54
收件人:&nbsp;"user-zh@flink.apache.org"<user-zh@flink.apache.org&gt;;

主题:&nbsp;Re: 回复: 回复: 回复: 回复: 回复: 回复: Flink双流Join问题



看看这一段

The creation of pairwise combinations of elements of the two streams behaves like an inner-join, meaning elements from one stream will not be emitted if they don’t have a corresponding element from the other stream to be joined with.
Those elements that do get joined will have as their timestamp the largest timestamp that still lies in the respective window. For example a window with [5, 10) as its boundaries would result in the joined elements having 9 as their timestamp.
In the following section we are going to give an overview over how different kinds of window joins behave using some exemplary scenarios.


在 2020/4/5 上午11:47,“忝忝向仧”<153488125@qq.com&gt; 写入:

&nbsp;&nbsp;&nbsp; 好像跟这个休眠没啥关系,结果还是一样的
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; ------------------&amp;nbsp;原始邮件&amp;nbsp;------------------
&nbsp;&nbsp;&nbsp; 发件人:&amp;nbsp;"Djeng Lee"<lee.roval@gmail.com&amp;gt;;
&nbsp;&nbsp;&nbsp; 发送时间:&amp;nbsp;2020年4月5日(星期天) 中午11:45
&nbsp;&nbsp;&nbsp; 收件人:&amp;nbsp;"user-zh@flink.apache.org"<user-zh@flink.apache.org&amp;gt;;
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 主题:&amp;nbsp;Re: 回复: 回复: 回复: 回复: 回复: Flink双流Join问题
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 那那忽略我吧
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 在 2020/4/5 上午11:42,“忝忝向仧”<153488125@qq.com&amp;gt; 写入:
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 额,我是直接在kafka客户端手动输入数据的.
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 那我输入慢点看看.
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ./kafka-console-producer.sh --broker-list xx.xx.xx.xx:9092 --topic stream2
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;1 jerry2 1553503186000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;1 jerry3 1553503187000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;1 jerry4 1553503188000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;1 jerry1 1553503189000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;1 jerry4 1553503188000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;1 jerry1 1553503189000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;1 jerry2 1553503191000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;1 jerry3 1553503192000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ------------------&amp;amp;nbsp;原始邮件&amp;amp;nbsp;------------------
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 发件人:&amp;amp;nbsp;"Djeng Lee"<lee.roval@gmail.com&amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 发送时间:&amp;amp;nbsp;2020年4月5日(星期天) 中午11:39
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 收件人:&amp;amp;nbsp;"user-zh@flink.apache.org"<user-zh@flink.apache.org&amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 主题:&amp;amp;nbsp;Re: 回复: 回复: 回复: 回复: Flink双流Join问题
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 你不是有个给kafka生产数据的脚本,生产数据时慢点,休眠1秒。
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -》你用的是周期水印
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 在 2020/4/5 上午11:35,“忝忝向仧”<153488125@qq.com&amp;amp;gt; 写入:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 你的意思是说,在flink消费kafka时候,每条记录给个1秒休眠间隔?
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 比如,这里加个休眠1秒?
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; DataStream<String&amp;amp;amp;gt; stream1 = env
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; .addSource(new FlinkKafkaConsumer09<String&amp;amp;amp;gt;("stream1", new SimpleStringSchema(), properties).
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; setStartFromLatest());
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; ------------------&amp;amp;amp;nbsp;原始邮件&amp;amp;amp;nbsp;------------------
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 发件人:&amp;amp;amp;nbsp;"Djeng Lee"<lee.roval@gmail.com&amp;amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 发送时间:&amp;amp;amp;nbsp;2020年4月5日(星期天) 中午11:26
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 收件人:&amp;amp;amp;nbsp;"user-zh@flink.apache.org"<user-zh@flink.apache.org&amp;amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 主题:&amp;amp;amp;nbsp;Re: 回复: 回复: 回复: Flink双流Join问题
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 给kafka吐数据时每条记录之间休眠1秒试试.
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 文档位置
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; https://ci.apache.org/projects/flink/flink-docs-release-1.10/zh/dev/event_timestamps_watermarks.html
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; https://ci.apache.org/projects/flink/flink-docs-release-1.10/zh/dev/stream/operators/joining.html
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; AssignerWithPeriodicWatermarks assigns timestamps and generates watermarks periodically (possibly depending on the stream elements, or purely based on processing time).
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; The interval (every n milliseconds) in which the watermark will be generated is defined via ExecutionConfig.setAutoWatermarkInterval(...). The assigner’s getCurrentWatermark() method will be called each time, and a new watermark will be emitted if the returned watermark is non-null and larger than the previous watermark.
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Here we show two simple examples of timestamp assigners that use periodic watermark generation. Note that Flink ships with a BoundedOutOfOrdernessTimestampExtractor similar to the BoundedOutOfOrdernessGenerator shown below, which you can read about here.
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 在 2020/4/5 上午10:21,“忝忝向仧”<153488125@qq.com&amp;amp;amp;gt; 写入:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; Hi,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 感觉有点不对,我试着用stream1输入:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 1 tom1 1553503185000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 1 tom2 1553503186000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 1 tom3 1553503187000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 1 tom4 1553503188000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 1 tom_late 1553503185000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; stream2输入:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 1 jerry2 1553503186000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 1 jerry3 1553503187000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 1 jerry4 1553503188000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 但是结果打印的是:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; currentTimeStamp: 1553503185000,Key:1,EventTime:1553503185000,前一条数据的水位线:0
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 4&amp;amp;amp;amp;gt; (1,tom1,1553503185000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; currentTimeStamp: 1553503186000,Key:1,EventTime:1553503186000,前一条数据的水位线:1553503185000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 4&amp;amp;amp;amp;gt; (1,tom2,1553503186000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; currentTimeStamp: 1553503187000,Key:1,EventTime:1553503187000,前一条数据的水位线:1553503186000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 4&amp;amp;amp;amp;gt; (1,tom3,1553503187000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; currentTimeStamp: 1553503188000,Key:1,EventTime:1553503188000,前一条数据的水位线:1553503187000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 4&amp;amp;amp;amp;gt; (1,tom4,1553503188000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; currentTimeStamp: 1553503188000,Key:1,EventTime:1553503185000,前一条数据的水位线:1553503188000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 4&amp;amp;amp;amp;gt; (1,tom_late,1553503185000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; currentTimeStamp: 1553503186000,Key:1,EventTime:1553503186000,前一条数据的水位线:0
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 3&amp;amp;amp;amp;gt; (1,jerry2,1553503186000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; currentTimeStamp: 1553503187000,Key:1,EventTime:1553503187000,前一条数据的水位线:1553503186000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 3&amp;amp;amp;amp;gt; (1,jerry3,1553503187000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; currentTimeStamp: 1553503188000,Key:1,EventTime:1553503188000,前一条数据的水位线:1553503187000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 3&amp;amp;amp;amp;gt; (1,jerry4,1553503188000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 2&amp;amp;amp;amp;gt; tom1=jerry2
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 2&amp;amp;amp;amp;gt; tom1=jerry3
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 2&amp;amp;amp;amp;gt; tom2=jerry2
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 2&amp;amp;amp;amp;gt; tom2=jerry3
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 2&amp;amp;amp;amp;gt; tom3=jerry2
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 2&amp;amp;amp;amp;gt; tom3=jerry3
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 2&amp;amp;amp;amp;gt; tom_late=jerry2
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 2&amp;amp;amp;amp;gt; tom_late=jerry3
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 我第二个流的窗口是[1553503186000,1553503188000),怎么判断出stream1中那条迟到的是没过期的?
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 谢谢.
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; ------------------&amp;amp;amp;amp;nbsp;原始邮件&amp;amp;amp;amp;nbsp;------------------
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 发件人:&amp;amp;amp;amp;nbsp;"libenchao"<libenchao@gmail.com&amp;amp;amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 发送时间:&amp;amp;amp;amp;nbsp;2020年4月5日(星期天) 上午10:04
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 收件人:&amp;amp;amp;amp;nbsp;"user-zh"<user-zh@flink.apache.org&amp;amp;amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 主题:&amp;amp;amp;amp;nbsp;Re: 回复: 回复: Flink双流Join问题
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 嗯,可以这么理解。
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 忝忝向仧 <153488125@qq.com&amp;amp;amp;amp;gt; 于2020年4月4日周六 下午11:20写道:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; 额,明白了,意思是说两个流情况下
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; 比如,stream1里面晚来的那条
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; 1 tom_late 1553503185000的水印是1553503188000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; 但是stream2里面,这条1,jerry1,1553503185000的水印是1553503185000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; 所以取最小的,因此还是会被打印?
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; 是这么理解么?
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; ------------------&amp;amp;amp;amp;amp;nbsp;原始邮件&amp;amp;amp;amp;amp;nbsp;------------------
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; 发件人:&amp;amp;amp;amp;amp;nbsp;"libenchao"<libenchao@gmail.com&amp;amp;amp;amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; 发送时间:&amp;amp;amp;amp;amp;nbsp;2020年4月4日(星期六) 晚上11:04
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; 收件人:&amp;amp;amp;amp;amp;nbsp;"user-zh"<user-zh@flink.apache.org&amp;amp;amp;amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; 主题:&amp;amp;amp;amp;amp;nbsp;Re: 回复: 回复: Flink双流Join问题
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; 两个stream输入的场景,operator的watermark是取两者的最小值。
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; 所以虽然这条数据在第一个流里面看起来已经是肯定迟到了,但是有可能看第二个流的watermark它还没有过期。
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; 忝忝向仧 <153488125@qq.com&amp;amp;amp;amp;amp;gt; 于2020年4月4日周六 下午10:42写道:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; Hi:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;nbsp; 还有个疑问,我特意构造了个乱序的消息,还是3秒一个窗口
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; stream1:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 1 tom1 1553503185000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 1 tom2 1553503186000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 1 tom3 1553503187000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 1 tom4 1553503188000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 1 tom_late 1553503185000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; stream2:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 1 jerry1 1553503185000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 1 jerry2 1553503186000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 1 jerry3 1553503187000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 1 jerry4 1553503188000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 我代码还是之前的代码,定义水印都是maxDelayAllowed = 0L;也就是没有设置最大延时时间.
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 那么,tom_late这条乱序,在第一个窗口[1553503185000,1553503188000)内不应该被输出吧?
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 但是结果还是输出了,这个是为什么?
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; 1553503185000,Key:1,EventTime:1553503185000,前一条数据的水位线:0
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 4&amp;amp;amp;amp;amp;amp;gt; (1,tom1,1553503185000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 1553503186000,Key:1,EventTime:1553503186000,前一条数据的水位线:1553503185000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 4&amp;amp;amp;amp;amp;amp;gt; (1,tom2,1553503186000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 1553503187000,Key:1,EventTime:1553503187000,前一条数据的水位线:1553503186000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 4&amp;amp;amp;amp;amp;amp;gt; (1,tom3,1553503187000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 1553503188000,Key:1,EventTime:1553503188000,前一条数据的水位线:1553503187000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 4&amp;amp;amp;amp;amp;amp;gt; (1,tom4,1553503188000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 1553503188000,Key:1,EventTime:1553503185000,前一条数据的水位线:1553503188000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 4&amp;amp;amp;amp;amp;amp;gt; (1,tom_late,1553503185000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 1553503189000,Key:2,EventTime:1553503189000,前一条数据的水位线:1553503188000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 4&amp;amp;amp;amp;amp;amp;gt; (2,tom5,1553503189000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 1553503191000,Key:2,EventTime:1553503191000,前一条数据的水位线:1553503189000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 4&amp;amp;amp;amp;amp;amp;gt; (2,tom6,1553503191000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 1553503192000,Key:2,EventTime:1553503192000,前一条数据的水位线:1553503191000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 4&amp;amp;amp;amp;amp;amp;gt; (2,tom7,1553503192000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 1553503193000,Key:2,EventTime:1553503193000,前一条数据的水位线:1553503192000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 4&amp;amp;amp;amp;amp;amp;gt; (2,tom8,1553503193000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; 1553503185000,Key:1,EventTime:1553503185000,前一条数据的水位线:0
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 3&amp;amp;amp;amp;amp;amp;gt; (1,jerry1,1553503185000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 1553503186000,Key:1,EventTime:1553503186000,前一条数据的水位线:1553503185000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 3&amp;amp;amp;amp;amp;amp;gt; (1,jerry2,1553503186000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 1553503187000,Key:1,EventTime:1553503187000,前一条数据的水位线:1553503186000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 3&amp;amp;amp;amp;amp;amp;gt; (1,jerry3,1553503187000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 1553503188000,Key:1,EventTime:1553503188000,前一条数据的水位线:1553503187000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 3&amp;amp;amp;amp;amp;amp;gt; (1,jerry4,1553503188000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 2&amp;amp;amp;amp;amp;amp;gt; tom1=jerry1
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 2&amp;amp;amp;amp;amp;amp;gt; tom1=jerry2
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 2&amp;amp;amp;amp;amp;amp;gt; tom1=jerry3
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 2&amp;amp;amp;amp;amp;amp;gt; tom2=jerry1
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 2&amp;amp;amp;amp;amp;amp;gt; tom2=jerry2
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 2&amp;amp;amp;amp;amp;amp;gt; tom2=jerry3
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 2&amp;amp;amp;amp;amp;amp;gt; tom3=jerry1
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 2&amp;amp;amp;amp;amp;amp;gt; tom3=jerry2
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 2&amp;amp;amp;amp;amp;amp;gt; tom3=jerry3
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 2&amp;amp;amp;amp;amp;amp;gt; tom_late=jerry1
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 2&amp;amp;amp;amp;amp;amp;gt; tom_late=jerry2
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 2&amp;amp;amp;amp;amp;amp;gt; tom_late=jerry3
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; ------------------&amp;amp;amp;amp;amp;amp;nbsp;原始邮件&amp;amp;amp;amp;amp;amp;nbsp;------------------
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 发件人:&amp;amp;amp;amp;amp;amp;nbsp;"Djeng Lee"<lee.roval@gmail.com&amp;amp;amp;amp;amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 发送时间:&amp;amp;amp;amp;amp;amp;nbsp;2020年4月4日(星期六) 晚上6:35
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 收件人:&amp;amp;amp;amp;amp;amp;nbsp;"user-zh@flink.apache.org"<user-zh@flink.apache.org
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 主题:&amp;amp;amp;amp;amp;amp;nbsp;Re: 回复: 回复: Flink双流Join问题
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 刚刚我说的不严谨
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; Start = 1000000055000 - (1000000055000 - 0 + 3000) % 3000 =
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; 1000000053000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; End = 1000000053000 + 3000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; //源码位置,所以窗口开端并不是你传入首条记录的作为开端。窗口划分是从0时间戳切过来的。
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 文档说明:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; https://ci.apache.org/projects/flink/flink-docs-release-1.10/zh/dev/event_timestamps_watermarks.html
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 相关代码
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; public static long getWindowStartWithOffset(long timestamp, long
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; offset,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; long windowSize) {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; return timestamp - (timestamp - offset + windowSize)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; % windowSize;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 在 2020/4/4 下午6:30,“忝忝向仧”<153488125@qq.com&amp;amp;amp;amp;amp;amp;gt; 写入:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; 额,你的意思是滚动3秒的窗口开始和结束应该是
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; 1000000055000 % 3 得出结果再拿到[start,end).
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; 比如1000000055000 % 3
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 的结果是1000000053000,那么窗口是[1000000053000,1000000056000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; 是这么理解吧
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; ------------------&amp;amp;amp;amp;amp;amp;amp;nbsp;原始邮件&amp;amp;amp;amp;amp;amp;amp;nbsp;------------------
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; 发件人:&amp;amp;amp;amp;amp;amp;amp;nbsp;"lee.roval"<
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; lee.roval@gmail.com&amp;amp;amp;amp;amp;amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; 发送时间:&amp;amp;amp;amp;amp;amp;amp;nbsp;2020年4月4日(星期六)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; 晚上6:25
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; 收件人:&amp;amp;amp;amp;amp;amp;amp;nbsp;"
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; user-zh@flink.apache.org"<
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; user-zh@flink.apache.org&amp;amp;amp;amp;amp;amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; 主题:&amp;amp;amp;amp;amp;amp;amp;nbsp;Re: 回复: Flink双流Join问题
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; 55000的窗口分配,是对windowSize 求模然后拿到start 和
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; end。 不是从你首条记录开始算。
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; 在 2020/4/4 下午6:23,“忝忝向仧”<
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; 153488125@qq.com&amp;amp;amp;amp;amp;amp;amp;gt; 写入:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; 对,我只是回复把前面那串省略了,没写.
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; [1000000053000,1000000056000),为什么是1000000053000开始?
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; 我第一条输入的是
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; 1,tom1,1000000055000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; ------------------&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;原始邮件&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;------------------
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 发件人:&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;"libenchao"<libenchao@gmail.com
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 发送时间:&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;2020年4月4日(星期六) 晚上6:20
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 收件人:&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;"user-zh"<user-zh@flink.apache.org
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; 主题:&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;Re:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; Flink双流Join问题
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 你的watermark不是56000,而是1000000056000吧。所以应该是[1000000053000,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; 1000000056000)是一个窗口吧。
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; 忝忝向仧 <153488125@qq.com
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 于2020年4月4日周六 下午6:16写道:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt; 下发新的?
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 4是一个kafka的source,3是另外一个kafka的source.
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt; 如果按照3秒的一个窗口
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; watermark触发窗口的条件是watermark_time&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;=window_endtime
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 也就是说[55000,57000)应该是一个窗口的.
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 我是这么理解的,但是结果56000后就输出了
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; currentTimeStamp:&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 4&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; (1,tom1,1000000055000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; currentTimeStamp:&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 4&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; (1,tom2,1000000056000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; currentTimeStamp:&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 3&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; (1,jerry1,1000000055000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; currentTimeStamp:&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 3&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; (1,jerry2,1000000056000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 2&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; tom1=jerry1
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; ------------------&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;原始邮件&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;------------------
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 发件人:&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;"lee.roval"<lee.roval@gmail.com
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 发送时间:&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;2020年4月4日(星期六) 晚上6:10
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 收件人:&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;"user-zh@flink.apache.org"<
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; user-zh@flink.apache.org
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 主题:&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;Re: Flink双流Join问题
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 56000后不是下发新的watermark了嘛
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt; 在 2020/4/4
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 下午5:57,“忝忝向仧”<153488125@qq.com&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; 写入:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 各位好:&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; Flink双流Join遇到一个问题,能否解释下,谢谢.
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; ds1和ds2分别读取kafka两个流数据,使用event time和watermark特性,3s的一个翻滚窗口,定义如下:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 最后,join输出的时候,为什么触发窗口的数据第二条就触发了?
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; 按照水印的触发条件应该是watermark_time&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;=window_endtime.那么,这里应该是1000000057000这条数据来了后才会触发,但是结果却是56000就触发了.为什么?
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; 定义的代码如下:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; DataStream<String&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; stream1 = env
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; .addSource(new
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; FlinkKafkaConsumer09<String&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;("stream1",
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; new
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; SimpleStringSchema(), properties).setStartFromLatest())
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; .assignTimestampsAndWatermarks(
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt; new
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; AssignerWithPeriodicWatermarks<String&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;() {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt; long
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; currentTimeStamp = 0L;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt; long
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; maxDelayAllowed = 0L;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt; long
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; currentWaterMark;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt; @Nullable
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt; @Override
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt; public
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; Watermark getCurrentWatermark() {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; currentWaterMark = currentTimeStamp-maxDelayAllowed;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt; return new
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; Watermark(currentWaterMark);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt; @Override
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt; public long
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; extractTimestamp(String s, long l) {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt; String[]
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; arr= s.split(" ");
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt; long
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; timeStamp = Long.parseLong(arr[2]);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; currentTimeStamp = Math.max(timeStamp, currentTimeStamp);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; System.out.println("currentTimeStamp: " +&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; currentTimeStamp +",Key:" +
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt; arr[0] +
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; ",EventTime:" + timeStamp + ",前一条数据的水位线:" + currentWaterMark);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt; return
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; timeStamp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; );
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; DataStream<Tuple3<String,String,String&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt; ds1 =
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; stream1.map(new MapFunction<String,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; Tuple3<String,String,String&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;()
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; @Override
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; public Tuple3<String,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; String,String&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; map(String s1) throws Exception
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt; String[]
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; arr = s1.split(" ");
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; return
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; Tuple3.of(arr[0],arr[1],arr[2]);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp; });
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; ds1.print();
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; DataStream<String&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; stream2 = env
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; .addSource(new
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; FlinkKafkaConsumer09<String&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;("stream2",
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; new
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; SimpleStringSchema(), properties).setStartFromLatest())
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; .assignTimestampsAndWatermarks(
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt; new
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; AssignerWithPeriodicWatermarks<String&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;() {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt; long
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; currentTimeStamp = 0L;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt; long
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; maxDelayAllowed = 0L;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt; long
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; currentWaterMark;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt; @Nullable
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt; @Override
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt; public
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; Watermark getCurrentWatermark() {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; currentWaterMark = currentTimeStamp-maxDelayAllowed;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt; return new
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; Watermark(currentWaterMark);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt; @Override
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt; public long
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; extractTimestamp(String s, long l) {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt; String[]
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; arr= s.split(" ");
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt; long
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; timeStamp = Long.parseLong(arr[2]);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; currentTimeStamp = Math.max(timeStamp, currentTimeStamp);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; System.out.println("currentTimeStamp: " +&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; currentTimeStamp +",Key:" +
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt; arr[0] +
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; ",EventTime:" + timeStamp + ",前一条数据的水位线:" + currentWaterMark);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt; return
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; timeStamp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; );
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; DataStream<Tuple3<String,String,String&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt; ds2
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; =stream2.map(new MapFunction<String,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; Tuple3<String,String,String&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;()
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; @Override
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; public
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; Tuple3<String,String,String&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; map(String s2)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; throws
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; Exception {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; String
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt; [] arr =
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; s2.split(" ");
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; return
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; Tuple3.of(arr[0],arr[1],arr[2]);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp; });
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; ds2.print();
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; ds1.join(ds2).where(new KeySelector<Tuple3<String,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; String,String&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;,String&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;() {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; @Override
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; public String
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; getKey(Tuple3<String, String,String&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; value)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; throws
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; Exception {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; return
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt; value.f0;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; }).equalTo(new
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; KeySelector<Tuple3<String, String
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; ,String&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;, String&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;() {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; @Override
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; public String
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; getKey(Tuple3<String, String,String&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; value)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; throws
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; Exception {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; return
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt; value.f0;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp; })
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; .window(TumblingEventTimeWindows.of(Time.seconds(3)))
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; .apply(new
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; JoinFunction<Tuple3<String,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; String,String&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;, Tuple3<String,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; String,String&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; String&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;() {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; @Override
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; public String
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; join(Tuple3<String, String,String&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; value1,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; Tuple3<String,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; String,String&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; value2) throws Exception {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; return
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt; value1.f1 +
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; "=" + value2.f1;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; }).print();
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; 结果如下:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 4&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; (1,tom1,1000000055000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 4&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; (1,tom2,1000000056000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 3&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; (1,jerry1,1000000055000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 3&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; (1,jerry2,1000000056000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; 2&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; tom1=jerry1
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; --
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; Benchao Li
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; School of Electronics
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; Engineering and Computer Science, Peking University
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; Tel:+86-15650713730
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; Email:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt; libenchao@gmail.com; libenchao@pku.edu.cn
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; --
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; Benchao Li
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; School of Electronics Engineering and Computer Science, Peking University
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; Tel:+86-15650713730
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; Email: libenchao@gmail.com; libenchao@pku.edu.cn
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; -- 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; Benchao Li
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; School of Electronics Engineering and Computer Science, Peking University
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; Tel:+86-15650713730
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; Email: libenchao@gmail.com; libenchao@pku.edu.cn

回复: 回复: 回复: 回复: 回复: 回复: Flink双流Join问题

Posted by 忝忝向仧 <15...@qq.com>.
好像跟这个休眠没啥关系,结果还是一样的




------------------&nbsp;原始邮件&nbsp;------------------
发件人:&nbsp;"Djeng Lee"<lee.roval@gmail.com&gt;;
发送时间:&nbsp;2020年4月5日(星期天) 中午11:45
收件人:&nbsp;"user-zh@flink.apache.org"<user-zh@flink.apache.org&gt;;

主题:&nbsp;Re: 回复: 回复: 回复: 回复: 回复: Flink双流Join问题



那那忽略我吧

在 2020/4/5 上午11:42,“忝忝向仧”<153488125@qq.com&gt; 写入:

&nbsp;&nbsp;&nbsp; 额,我是直接在kafka客户端手动输入数据的.
&nbsp;&nbsp;&nbsp; 那我输入慢点看看.
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; ./kafka-console-producer.sh --broker-list xx.xx.xx.xx:9092 --topic stream2
&nbsp;&nbsp;&nbsp; &amp;gt;1 jerry2 1553503186000
&nbsp;&nbsp;&nbsp; &amp;gt;1 jerry3 1553503187000
&nbsp;&nbsp;&nbsp; &amp;gt;1 jerry4 1553503188000
&nbsp;&nbsp;&nbsp; &amp;gt;1 jerry1 1553503189000
&nbsp;&nbsp;&nbsp; &amp;gt;1 jerry4 1553503188000
&nbsp;&nbsp;&nbsp; &amp;gt;1 jerry1 1553503189000
&nbsp;&nbsp;&nbsp; &amp;gt;1 jerry2 1553503191000
&nbsp;&nbsp;&nbsp; &amp;gt;1 jerry3 1553503192000
&nbsp;&nbsp;&nbsp; &amp;gt;
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; ------------------&amp;nbsp;原始邮件&amp;nbsp;------------------
&nbsp;&nbsp;&nbsp; 发件人:&amp;nbsp;"Djeng Lee"<lee.roval@gmail.com&amp;gt;;
&nbsp;&nbsp;&nbsp; 发送时间:&amp;nbsp;2020年4月5日(星期天) 中午11:39
&nbsp;&nbsp;&nbsp; 收件人:&amp;nbsp;"user-zh@flink.apache.org"<user-zh@flink.apache.org&amp;gt;;
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 主题:&amp;nbsp;Re: 回复: 回复: 回复: 回复: Flink双流Join问题
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 你不是有个给kafka生产数据的脚本,生产数据时慢点,休眠1秒。
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; -》你用的是周期水印
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 在 2020/4/5 上午11:35,“忝忝向仧”<153488125@qq.com&amp;gt; 写入:
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 你的意思是说,在flink消费kafka时候,每条记录给个1秒休眠间隔?
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 比如,这里加个休眠1秒?
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; DataStream<String&amp;amp;gt; stream1 = env
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .addSource(new FlinkKafkaConsumer09<String&amp;amp;gt;("stream1", new SimpleStringSchema(), properties).
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setStartFromLatest());
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ------------------&amp;amp;nbsp;原始邮件&amp;amp;nbsp;------------------
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 发件人:&amp;amp;nbsp;"Djeng Lee"<lee.roval@gmail.com&amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 发送时间:&amp;amp;nbsp;2020年4月5日(星期天) 中午11:26
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 收件人:&amp;amp;nbsp;"user-zh@flink.apache.org"<user-zh@flink.apache.org&amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 主题:&amp;amp;nbsp;Re: 回复: 回复: 回复: Flink双流Join问题
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 给kafka吐数据时每条记录之间休眠1秒试试.
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 文档位置
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; https://ci.apache.org/projects/flink/flink-docs-release-1.10/zh/dev/event_timestamps_watermarks.html
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; https://ci.apache.org/projects/flink/flink-docs-release-1.10/zh/dev/stream/operators/joining.html
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; AssignerWithPeriodicWatermarks assigns timestamps and generates watermarks periodically (possibly depending on the stream elements, or purely based on processing time).
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; The interval (every n milliseconds) in which the watermark will be generated is defined via ExecutionConfig.setAutoWatermarkInterval(...). The assigner’s getCurrentWatermark() method will be called each time, and a new watermark will be emitted if the returned watermark is non-null and larger than the previous watermark.
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Here we show two simple examples of timestamp assigners that use periodic watermark generation. Note that Flink ships with a BoundedOutOfOrdernessTimestampExtractor similar to the BoundedOutOfOrdernessGenerator shown below, which you can read about here.
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 在 2020/4/5 上午10:21,“忝忝向仧”<153488125@qq.com&amp;amp;gt; 写入:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Hi,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 感觉有点不对,我试着用stream1输入:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 1 tom1 1553503185000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 1 tom2 1553503186000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 1 tom3 1553503187000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 1 tom4 1553503188000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 1 tom_late 1553503185000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; stream2输入:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 1 jerry2 1553503186000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 1 jerry3 1553503187000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 1 jerry4 1553503188000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 但是结果打印的是:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; currentTimeStamp: 1553503185000,Key:1,EventTime:1553503185000,前一条数据的水位线:0
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 4&amp;amp;amp;gt; (1,tom1,1553503185000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; currentTimeStamp: 1553503186000,Key:1,EventTime:1553503186000,前一条数据的水位线:1553503185000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 4&amp;amp;amp;gt; (1,tom2,1553503186000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; currentTimeStamp: 1553503187000,Key:1,EventTime:1553503187000,前一条数据的水位线:1553503186000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 4&amp;amp;amp;gt; (1,tom3,1553503187000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; currentTimeStamp: 1553503188000,Key:1,EventTime:1553503188000,前一条数据的水位线:1553503187000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 4&amp;amp;amp;gt; (1,tom4,1553503188000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; currentTimeStamp: 1553503188000,Key:1,EventTime:1553503185000,前一条数据的水位线:1553503188000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 4&amp;amp;amp;gt; (1,tom_late,1553503185000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; currentTimeStamp: 1553503186000,Key:1,EventTime:1553503186000,前一条数据的水位线:0
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 3&amp;amp;amp;gt; (1,jerry2,1553503186000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; currentTimeStamp: 1553503187000,Key:1,EventTime:1553503187000,前一条数据的水位线:1553503186000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 3&amp;amp;amp;gt; (1,jerry3,1553503187000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; currentTimeStamp: 1553503188000,Key:1,EventTime:1553503188000,前一条数据的水位线:1553503187000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 3&amp;amp;amp;gt; (1,jerry4,1553503188000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 2&amp;amp;amp;gt; tom1=jerry2
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 2&amp;amp;amp;gt; tom1=jerry3
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 2&amp;amp;amp;gt; tom2=jerry2
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 2&amp;amp;amp;gt; tom2=jerry3
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 2&amp;amp;amp;gt; tom3=jerry2
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 2&amp;amp;amp;gt; tom3=jerry3
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 2&amp;amp;amp;gt; tom_late=jerry2
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 2&amp;amp;amp;gt; tom_late=jerry3
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 我第二个流的窗口是[1553503186000,1553503188000),怎么判断出stream1中那条迟到的是没过期的?
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 谢谢.
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; ------------------&amp;amp;amp;nbsp;原始邮件&amp;amp;amp;nbsp;------------------
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 发件人:&amp;amp;amp;nbsp;"libenchao"<libenchao@gmail.com&amp;amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 发送时间:&amp;amp;amp;nbsp;2020年4月5日(星期天) 上午10:04
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 收件人:&amp;amp;amp;nbsp;"user-zh"<user-zh@flink.apache.org&amp;amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 主题:&amp;amp;amp;nbsp;Re: 回复: 回复: Flink双流Join问题
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 嗯,可以这么理解。
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 忝忝向仧 <153488125@qq.com&amp;amp;amp;gt; 于2020年4月4日周六 下午11:20写道:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; 额,明白了,意思是说两个流情况下
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; 比如,stream1里面晚来的那条
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; 1 tom_late 1553503185000的水印是1553503188000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; 但是stream2里面,这条1,jerry1,1553503185000的水印是1553503185000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; 所以取最小的,因此还是会被打印?
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; 是这么理解么?
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; ------------------&amp;amp;amp;amp;nbsp;原始邮件&amp;amp;amp;amp;nbsp;------------------
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; 发件人:&amp;amp;amp;amp;nbsp;"libenchao"<libenchao@gmail.com&amp;amp;amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; 发送时间:&amp;amp;amp;amp;nbsp;2020年4月4日(星期六) 晚上11:04
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; 收件人:&amp;amp;amp;amp;nbsp;"user-zh"<user-zh@flink.apache.org&amp;amp;amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; 主题:&amp;amp;amp;amp;nbsp;Re: 回复: 回复: Flink双流Join问题
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; 两个stream输入的场景,operator的watermark是取两者的最小值。
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; 所以虽然这条数据在第一个流里面看起来已经是肯定迟到了,但是有可能看第二个流的watermark它还没有过期。
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; 忝忝向仧 <153488125@qq.com&amp;amp;amp;amp;gt; 于2020年4月4日周六 下午10:42写道:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; Hi:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;nbsp; 还有个疑问,我特意构造了个乱序的消息,还是3秒一个窗口
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; stream1:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 1 tom1 1553503185000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 1 tom2 1553503186000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 1 tom3 1553503187000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 1 tom4 1553503188000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 1 tom_late 1553503185000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; stream2:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 1 jerry1 1553503185000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 1 jerry2 1553503186000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 1 jerry3 1553503187000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 1 jerry4 1553503188000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 我代码还是之前的代码,定义水印都是maxDelayAllowed = 0L;也就是没有设置最大延时时间.
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 那么,tom_late这条乱序,在第一个窗口[1553503185000,1553503188000)内不应该被输出吧?
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 但是结果还是输出了,这个是为什么?
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; 1553503185000,Key:1,EventTime:1553503185000,前一条数据的水位线:0
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 4&amp;amp;amp;amp;amp;gt; (1,tom1,1553503185000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 1553503186000,Key:1,EventTime:1553503186000,前一条数据的水位线:1553503185000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 4&amp;amp;amp;amp;amp;gt; (1,tom2,1553503186000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 1553503187000,Key:1,EventTime:1553503187000,前一条数据的水位线:1553503186000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 4&amp;amp;amp;amp;amp;gt; (1,tom3,1553503187000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 1553503188000,Key:1,EventTime:1553503188000,前一条数据的水位线:1553503187000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 4&amp;amp;amp;amp;amp;gt; (1,tom4,1553503188000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 1553503188000,Key:1,EventTime:1553503185000,前一条数据的水位线:1553503188000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 4&amp;amp;amp;amp;amp;gt; (1,tom_late,1553503185000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 1553503189000,Key:2,EventTime:1553503189000,前一条数据的水位线:1553503188000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 4&amp;amp;amp;amp;amp;gt; (2,tom5,1553503189000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 1553503191000,Key:2,EventTime:1553503191000,前一条数据的水位线:1553503189000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 4&amp;amp;amp;amp;amp;gt; (2,tom6,1553503191000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 1553503192000,Key:2,EventTime:1553503192000,前一条数据的水位线:1553503191000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 4&amp;amp;amp;amp;amp;gt; (2,tom7,1553503192000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 1553503193000,Key:2,EventTime:1553503193000,前一条数据的水位线:1553503192000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 4&amp;amp;amp;amp;amp;gt; (2,tom8,1553503193000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; 1553503185000,Key:1,EventTime:1553503185000,前一条数据的水位线:0
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 3&amp;amp;amp;amp;amp;gt; (1,jerry1,1553503185000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 1553503186000,Key:1,EventTime:1553503186000,前一条数据的水位线:1553503185000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 3&amp;amp;amp;amp;amp;gt; (1,jerry2,1553503186000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 1553503187000,Key:1,EventTime:1553503187000,前一条数据的水位线:1553503186000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 3&amp;amp;amp;amp;amp;gt; (1,jerry3,1553503187000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 1553503188000,Key:1,EventTime:1553503188000,前一条数据的水位线:1553503187000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 3&amp;amp;amp;amp;amp;gt; (1,jerry4,1553503188000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 2&amp;amp;amp;amp;amp;gt; tom1=jerry1
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 2&amp;amp;amp;amp;amp;gt; tom1=jerry2
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 2&amp;amp;amp;amp;amp;gt; tom1=jerry3
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 2&amp;amp;amp;amp;amp;gt; tom2=jerry1
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 2&amp;amp;amp;amp;amp;gt; tom2=jerry2
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 2&amp;amp;amp;amp;amp;gt; tom2=jerry3
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 2&amp;amp;amp;amp;amp;gt; tom3=jerry1
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 2&amp;amp;amp;amp;amp;gt; tom3=jerry2
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 2&amp;amp;amp;amp;amp;gt; tom3=jerry3
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 2&amp;amp;amp;amp;amp;gt; tom_late=jerry1
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 2&amp;amp;amp;amp;amp;gt; tom_late=jerry2
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 2&amp;amp;amp;amp;amp;gt; tom_late=jerry3
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; ------------------&amp;amp;amp;amp;amp;nbsp;原始邮件&amp;amp;amp;amp;amp;nbsp;------------------
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 发件人:&amp;amp;amp;amp;amp;nbsp;"Djeng Lee"<lee.roval@gmail.com&amp;amp;amp;amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 发送时间:&amp;amp;amp;amp;amp;nbsp;2020年4月4日(星期六) 晚上6:35
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 收件人:&amp;amp;amp;amp;amp;nbsp;"user-zh@flink.apache.org"<user-zh@flink.apache.org
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 主题:&amp;amp;amp;amp;amp;nbsp;Re: 回复: 回复: Flink双流Join问题
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 刚刚我说的不严谨
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; Start = 1000000055000 - (1000000055000 - 0 + 3000) % 3000 =
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; 1000000053000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; End = 1000000053000 + 3000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; //源码位置,所以窗口开端并不是你传入首条记录的作为开端。窗口划分是从0时间戳切过来的。
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 文档说明:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; https://ci.apache.org/projects/flink/flink-docs-release-1.10/zh/dev/event_timestamps_watermarks.html
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 相关代码
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; public static long getWindowStartWithOffset(long timestamp, long
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; offset,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; long windowSize) {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; return timestamp - (timestamp - offset + windowSize)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; % windowSize;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 在 2020/4/4 下午6:30,“忝忝向仧”<153488125@qq.com&amp;amp;amp;amp;amp;gt; 写入:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; 额,你的意思是滚动3秒的窗口开始和结束应该是
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; 1000000055000 % 3 得出结果再拿到[start,end).
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; 比如1000000055000 % 3
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 的结果是1000000053000,那么窗口是[1000000053000,1000000056000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; 是这么理解吧
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; ------------------&amp;amp;amp;amp;amp;amp;nbsp;原始邮件&amp;amp;amp;amp;amp;amp;nbsp;------------------
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; 发件人:&amp;amp;amp;amp;amp;amp;nbsp;"lee.roval"<
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; lee.roval@gmail.com&amp;amp;amp;amp;amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; 发送时间:&amp;amp;amp;amp;amp;amp;nbsp;2020年4月4日(星期六)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; 晚上6:25
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; 收件人:&amp;amp;amp;amp;amp;amp;nbsp;"
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; user-zh@flink.apache.org"<
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; user-zh@flink.apache.org&amp;amp;amp;amp;amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; 主题:&amp;amp;amp;amp;amp;amp;nbsp;Re: 回复: Flink双流Join问题
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; 55000的窗口分配,是对windowSize 求模然后拿到start 和
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; end。 不是从你首条记录开始算。
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; 在 2020/4/4 下午6:23,“忝忝向仧”<
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; 153488125@qq.com&amp;amp;amp;amp;amp;amp;gt; 写入:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; 对,我只是回复把前面那串省略了,没写.
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; [1000000053000,1000000056000),为什么是1000000053000开始?
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; 我第一条输入的是
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; 1,tom1,1000000055000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; ------------------&amp;amp;amp;amp;amp;amp;amp;nbsp;原始邮件&amp;amp;amp;amp;amp;amp;amp;nbsp;------------------
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 发件人:&amp;amp;amp;amp;amp;amp;amp;nbsp;"libenchao"<libenchao@gmail.com
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 发送时间:&amp;amp;amp;amp;amp;amp;amp;nbsp;2020年4月4日(星期六) 晚上6:20
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 收件人:&amp;amp;amp;amp;amp;amp;amp;nbsp;"user-zh"<user-zh@flink.apache.org
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; 主题:&amp;amp;amp;amp;amp;amp;amp;nbsp;Re:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; Flink双流Join问题
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 你的watermark不是56000,而是1000000056000吧。所以应该是[1000000053000,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; 1000000056000)是一个窗口吧。
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; 忝忝向仧 <153488125@qq.com
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 于2020年4月4日周六 下午6:16写道:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; 下发新的?
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 4是一个kafka的source,3是另外一个kafka的source.
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; 如果按照3秒的一个窗口
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; watermark触发窗口的条件是watermark_time&amp;amp;amp;amp;amp;amp;amp;amp;gt;=window_endtime
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 也就是说[55000,57000)应该是一个窗口的.
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 我是这么理解的,但是结果56000后就输出了
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; currentTimeStamp:&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 4&amp;amp;amp;amp;amp;amp;amp;amp;gt; (1,tom1,1000000055000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; currentTimeStamp:&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 4&amp;amp;amp;amp;amp;amp;amp;amp;gt; (1,tom2,1000000056000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; currentTimeStamp:&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 3&amp;amp;amp;amp;amp;amp;amp;amp;gt; (1,jerry1,1000000055000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; currentTimeStamp:&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 3&amp;amp;amp;amp;amp;amp;amp;amp;gt; (1,jerry2,1000000056000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 2&amp;amp;amp;amp;amp;amp;amp;amp;gt; tom1=jerry1
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; ------------------&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;原始邮件&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;------------------
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 发件人:&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;"lee.roval"<lee.roval@gmail.com
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 发送时间:&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;2020年4月4日(星期六) 晚上6:10
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 收件人:&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;"user-zh@flink.apache.org"<
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; user-zh@flink.apache.org
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 主题:&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;Re: Flink双流Join问题
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 56000后不是下发新的watermark了嘛
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; 在 2020/4/4
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 下午5:57,“忝忝向仧”<153488125@qq.com&amp;amp;amp;amp;amp;amp;amp;amp;gt; 写入:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 各位好:&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; Flink双流Join遇到一个问题,能否解释下,谢谢.
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; ds1和ds2分别读取kafka两个流数据,使用event time和watermark特性,3s的一个翻滚窗口,定义如下:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 最后,join输出的时候,为什么触发窗口的数据第二条就触发了?
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; 按照水印的触发条件应该是watermark_time&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;=window_endtime.那么,这里应该是1000000057000这条数据来了后才会触发,但是结果却是56000就触发了.为什么?
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; 定义的代码如下:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; DataStream<String&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; stream1 = env
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; .addSource(new
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; FlinkKafkaConsumer09<String&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;("stream1",
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; new
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; SimpleStringSchema(), properties).setStartFromLatest())
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; .assignTimestampsAndWatermarks(
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; new
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; AssignerWithPeriodicWatermarks<String&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;() {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; long
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; currentTimeStamp = 0L;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; long
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; maxDelayAllowed = 0L;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; long
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; currentWaterMark;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; @Nullable
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; @Override
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; public
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; Watermark getCurrentWatermark() {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; currentWaterMark = currentTimeStamp-maxDelayAllowed;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; return new
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; Watermark(currentWaterMark);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; @Override
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; public long
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; extractTimestamp(String s, long l) {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; String[]
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; arr= s.split(" ");
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; long
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; timeStamp = Long.parseLong(arr[2]);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; currentTimeStamp = Math.max(timeStamp, currentTimeStamp);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; System.out.println("currentTimeStamp: " +&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; currentTimeStamp +",Key:" +
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; arr[0] +
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; ",EventTime:" + timeStamp + ",前一条数据的水位线:" + currentWaterMark);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; return
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; timeStamp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; );
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; DataStream<Tuple3<String,String,String&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; ds1 =
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; stream1.map(new MapFunction<String,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; Tuple3<String,String,String&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;()
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; @Override
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; public Tuple3<String,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; String,String&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; map(String s1) throws Exception
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; String[]
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; arr = s1.split(" ");
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; return
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; Tuple3.of(arr[0],arr[1],arr[2]);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp; });
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; ds1.print();
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; DataStream<String&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; stream2 = env
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; .addSource(new
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; FlinkKafkaConsumer09<String&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;("stream2",
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; new
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; SimpleStringSchema(), properties).setStartFromLatest())
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; .assignTimestampsAndWatermarks(
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; new
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; AssignerWithPeriodicWatermarks<String&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;() {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; long
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; currentTimeStamp = 0L;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; long
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; maxDelayAllowed = 0L;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; long
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; currentWaterMark;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; @Nullable
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; @Override
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; public
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; Watermark getCurrentWatermark() {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; currentWaterMark = currentTimeStamp-maxDelayAllowed;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; return new
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; Watermark(currentWaterMark);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; @Override
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; public long
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; extractTimestamp(String s, long l) {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; String[]
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; arr= s.split(" ");
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; long
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; timeStamp = Long.parseLong(arr[2]);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; currentTimeStamp = Math.max(timeStamp, currentTimeStamp);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; System.out.println("currentTimeStamp: " +&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; currentTimeStamp +",Key:" +
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; arr[0] +
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; ",EventTime:" + timeStamp + ",前一条数据的水位线:" + currentWaterMark);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; return
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; timeStamp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; );
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; DataStream<Tuple3<String,String,String&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; ds2
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; =stream2.map(new MapFunction<String,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; Tuple3<String,String,String&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;()
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; @Override
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; public
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; Tuple3<String,String,String&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; map(String s2)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; throws
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; Exception {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; String
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; [] arr =
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; s2.split(" ");
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; return
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; Tuple3.of(arr[0],arr[1],arr[2]);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp; });
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; ds2.print();
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; ds1.join(ds2).where(new KeySelector<Tuple3<String,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; String,String&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;,String&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;() {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; @Override
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; public String
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; getKey(Tuple3<String, String,String&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; value)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; throws
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; Exception {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; return
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; value.f0;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; }).equalTo(new
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; KeySelector<Tuple3<String, String
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; ,String&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;, String&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;() {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; @Override
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; public String
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; getKey(Tuple3<String, String,String&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; value)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; throws
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; Exception {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; return
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; value.f0;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp; })
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; .window(TumblingEventTimeWindows.of(Time.seconds(3)))
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; .apply(new
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; JoinFunction<Tuple3<String,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; String,String&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;, Tuple3<String,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; String,String&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; String&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;() {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; @Override
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; public String
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; join(Tuple3<String, String,String&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; value1,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; Tuple3<String,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; String,String&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; value2) throws Exception {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; return
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt; value1.f1 +
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; "=" + value2.f1;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; }).print();
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; 结果如下:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 4&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; (1,tom1,1000000055000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 4&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; (1,tom2,1000000056000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 3&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; (1,jerry1,1000000055000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 3&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; (1,jerry2,1000000056000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; 2&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; tom1=jerry1
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; --
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; Benchao Li
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; School of Electronics
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; Engineering and Computer Science, Peking University
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; Tel:+86-15650713730
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; Email:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; &amp;amp;amp;amp;gt; libenchao@gmail.com; libenchao@pku.edu.cn
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; --
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; Benchao Li
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; School of Electronics Engineering and Computer Science, Peking University
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; Tel:+86-15650713730
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; Email: libenchao@gmail.com; libenchao@pku.edu.cn
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; -- 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Benchao Li
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; School of Electronics Engineering and Computer Science, Peking University
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Tel:+86-15650713730
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Email: libenchao@gmail.com; libenchao@pku.edu.cn

回复: 回复: 回复: 回复: 回复: Flink双流Join问题

Posted by 忝忝向仧 <15...@qq.com>.
额,我是直接在kafka客户端手动输入数据的.
那我输入慢点看看.


./kafka-console-producer.sh --broker-list xx.xx.xx.xx:9092 --topic stream2
&gt;1 jerry2 1553503186000
&gt;1 jerry3 1553503187000
&gt;1 jerry4 1553503188000
&gt;1 jerry1 1553503189000
&gt;1 jerry4 1553503188000
&gt;1 jerry1 1553503189000
&gt;1 jerry2 1553503191000
&gt;1 jerry3 1553503192000
&gt;











------------------&nbsp;原始邮件&nbsp;------------------
发件人:&nbsp;"Djeng Lee"<lee.roval@gmail.com&gt;;
发送时间:&nbsp;2020年4月5日(星期天) 中午11:39
收件人:&nbsp;"user-zh@flink.apache.org"<user-zh@flink.apache.org&gt;;

主题:&nbsp;Re: 回复: 回复: 回复: 回复: Flink双流Join问题



你不是有个给kafka生产数据的脚本,生产数据时慢点,休眠1秒。

-》你用的是周期水印


在 2020/4/5 上午11:35,“忝忝向仧”<153488125@qq.com&gt; 写入:

&nbsp;&nbsp;&nbsp; 你的意思是说,在flink消费kafka时候,每条记录给个1秒休眠间隔?
&nbsp;&nbsp;&nbsp; 比如,这里加个休眠1秒?
&nbsp;&nbsp;&nbsp; DataStream<String&amp;gt; stream1 = env
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .addSource(new FlinkKafkaConsumer09<String&amp;gt;("stream1", new SimpleStringSchema(), properties).
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setStartFromLatest());
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; ------------------&amp;nbsp;原始邮件&amp;nbsp;------------------
&nbsp;&nbsp;&nbsp; 发件人:&amp;nbsp;"Djeng Lee"<lee.roval@gmail.com&amp;gt;;
&nbsp;&nbsp;&nbsp; 发送时间:&amp;nbsp;2020年4月5日(星期天) 中午11:26
&nbsp;&nbsp;&nbsp; 收件人:&amp;nbsp;"user-zh@flink.apache.org"<user-zh@flink.apache.org&amp;gt;;
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 主题:&amp;nbsp;Re: 回复: 回复: 回复: Flink双流Join问题
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 给kafka吐数据时每条记录之间休眠1秒试试.
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 文档位置
&nbsp;&nbsp;&nbsp; https://ci.apache.org/projects/flink/flink-docs-release-1.10/zh/dev/event_timestamps_watermarks.html
&nbsp;&nbsp;&nbsp; https://ci.apache.org/projects/flink/flink-docs-release-1.10/zh/dev/stream/operators/joining.html
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; AssignerWithPeriodicWatermarks assigns timestamps and generates watermarks periodically (possibly depending on the stream elements, or purely based on processing time).
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; The interval (every n milliseconds) in which the watermark will be generated is defined via ExecutionConfig.setAutoWatermarkInterval(...). The assigner’s getCurrentWatermark() method will be called each time, and a new watermark will be emitted if the returned watermark is non-null and larger than the previous watermark.
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; Here we show two simple examples of timestamp assigners that use periodic watermark generation. Note that Flink ships with a BoundedOutOfOrdernessTimestampExtractor similar to the BoundedOutOfOrdernessGenerator shown below, which you can read about here.
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 在 2020/4/5 上午10:21,“忝忝向仧”<153488125@qq.com&amp;gt; 写入:
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Hi,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 感觉有点不对,我试着用stream1输入:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1 tom1 1553503185000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1 tom2 1553503186000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1 tom3 1553503187000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1 tom4 1553503188000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1 tom_late 1553503185000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; stream2输入:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1 jerry2 1553503186000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1 jerry3 1553503187000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1 jerry4 1553503188000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 但是结果打印的是:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; currentTimeStamp: 1553503185000,Key:1,EventTime:1553503185000,前一条数据的水位线:0
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;amp;gt; (1,tom1,1553503185000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; currentTimeStamp: 1553503186000,Key:1,EventTime:1553503186000,前一条数据的水位线:1553503185000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;amp;gt; (1,tom2,1553503186000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; currentTimeStamp: 1553503187000,Key:1,EventTime:1553503187000,前一条数据的水位线:1553503186000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;amp;gt; (1,tom3,1553503187000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; currentTimeStamp: 1553503188000,Key:1,EventTime:1553503188000,前一条数据的水位线:1553503187000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;amp;gt; (1,tom4,1553503188000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; currentTimeStamp: 1553503188000,Key:1,EventTime:1553503185000,前一条数据的水位线:1553503188000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;amp;gt; (1,tom_late,1553503185000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; currentTimeStamp: 1553503186000,Key:1,EventTime:1553503186000,前一条数据的水位线:0
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;amp;gt; (1,jerry2,1553503186000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; currentTimeStamp: 1553503187000,Key:1,EventTime:1553503187000,前一条数据的水位线:1553503186000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;amp;gt; (1,jerry3,1553503187000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; currentTimeStamp: 1553503188000,Key:1,EventTime:1553503188000,前一条数据的水位线:1553503187000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;amp;gt; (1,jerry4,1553503188000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;amp;gt; tom1=jerry2
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;amp;gt; tom1=jerry3
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;amp;gt; tom2=jerry2
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;amp;gt; tom2=jerry3
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;amp;gt; tom3=jerry2
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;amp;gt; tom3=jerry3
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;amp;gt; tom_late=jerry2
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;amp;gt; tom_late=jerry3
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 我第二个流的窗口是[1553503186000,1553503188000),怎么判断出stream1中那条迟到的是没过期的?
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 谢谢.
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ------------------&amp;amp;nbsp;原始邮件&amp;amp;nbsp;------------------
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 发件人:&amp;amp;nbsp;"libenchao"<libenchao@gmail.com&amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 发送时间:&amp;amp;nbsp;2020年4月5日(星期天) 上午10:04
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 收件人:&amp;amp;nbsp;"user-zh"<user-zh@flink.apache.org&amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 主题:&amp;amp;nbsp;Re: 回复: 回复: Flink双流Join问题
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 嗯,可以这么理解。
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 忝忝向仧 <153488125@qq.com&amp;amp;gt; 于2020年4月4日周六 下午11:20写道:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 额,明白了,意思是说两个流情况下
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 比如,stream1里面晚来的那条
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 1 tom_late 1553503185000的水印是1553503188000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 但是stream2里面,这条1,jerry1,1553503185000的水印是1553503185000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 所以取最小的,因此还是会被打印?
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 是这么理解么?
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; ------------------&amp;amp;amp;nbsp;原始邮件&amp;amp;amp;nbsp;------------------
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 发件人:&amp;amp;amp;nbsp;"libenchao"<libenchao@gmail.com&amp;amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 发送时间:&amp;amp;amp;nbsp;2020年4月4日(星期六) 晚上11:04
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 收件人:&amp;amp;amp;nbsp;"user-zh"<user-zh@flink.apache.org&amp;amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 主题:&amp;amp;amp;nbsp;Re: 回复: 回复: Flink双流Join问题
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 两个stream输入的场景,operator的watermark是取两者的最小值。
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 所以虽然这条数据在第一个流里面看起来已经是肯定迟到了,但是有可能看第二个流的watermark它还没有过期。
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 忝忝向仧 <153488125@qq.com&amp;amp;amp;gt; 于2020年4月4日周六 下午10:42写道:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; Hi:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp; 还有个疑问,我特意构造了个乱序的消息,还是3秒一个窗口
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; stream1:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 1 tom1 1553503185000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 1 tom2 1553503186000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 1 tom3 1553503187000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 1 tom4 1553503188000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 1 tom_late 1553503185000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; stream2:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 1 jerry1 1553503185000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 1 jerry2 1553503186000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 1 jerry3 1553503187000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 1 jerry4 1553503188000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 我代码还是之前的代码,定义水印都是maxDelayAllowed = 0L;也就是没有设置最大延时时间.
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 那么,tom_late这条乱序,在第一个窗口[1553503185000,1553503188000)内不应该被输出吧?
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 但是结果还是输出了,这个是为什么?
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 1553503185000,Key:1,EventTime:1553503185000,前一条数据的水位线:0
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 4&amp;amp;amp;amp;gt; (1,tom1,1553503185000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 1553503186000,Key:1,EventTime:1553503186000,前一条数据的水位线:1553503185000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 4&amp;amp;amp;amp;gt; (1,tom2,1553503186000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 1553503187000,Key:1,EventTime:1553503187000,前一条数据的水位线:1553503186000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 4&amp;amp;amp;amp;gt; (1,tom3,1553503187000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 1553503188000,Key:1,EventTime:1553503188000,前一条数据的水位线:1553503187000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 4&amp;amp;amp;amp;gt; (1,tom4,1553503188000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 1553503188000,Key:1,EventTime:1553503185000,前一条数据的水位线:1553503188000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 4&amp;amp;amp;amp;gt; (1,tom_late,1553503185000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 1553503189000,Key:2,EventTime:1553503189000,前一条数据的水位线:1553503188000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 4&amp;amp;amp;amp;gt; (2,tom5,1553503189000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 1553503191000,Key:2,EventTime:1553503191000,前一条数据的水位线:1553503189000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 4&amp;amp;amp;amp;gt; (2,tom6,1553503191000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 1553503192000,Key:2,EventTime:1553503192000,前一条数据的水位线:1553503191000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 4&amp;amp;amp;amp;gt; (2,tom7,1553503192000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 1553503193000,Key:2,EventTime:1553503193000,前一条数据的水位线:1553503192000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 4&amp;amp;amp;amp;gt; (2,tom8,1553503193000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 1553503185000,Key:1,EventTime:1553503185000,前一条数据的水位线:0
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 3&amp;amp;amp;amp;gt; (1,jerry1,1553503185000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 1553503186000,Key:1,EventTime:1553503186000,前一条数据的水位线:1553503185000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 3&amp;amp;amp;amp;gt; (1,jerry2,1553503186000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 1553503187000,Key:1,EventTime:1553503187000,前一条数据的水位线:1553503186000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 3&amp;amp;amp;amp;gt; (1,jerry3,1553503187000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 1553503188000,Key:1,EventTime:1553503188000,前一条数据的水位线:1553503187000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 3&amp;amp;amp;amp;gt; (1,jerry4,1553503188000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 2&amp;amp;amp;amp;gt; tom1=jerry1
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 2&amp;amp;amp;amp;gt; tom1=jerry2
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 2&amp;amp;amp;amp;gt; tom1=jerry3
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 2&amp;amp;amp;amp;gt; tom2=jerry1
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 2&amp;amp;amp;amp;gt; tom2=jerry2
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 2&amp;amp;amp;amp;gt; tom2=jerry3
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 2&amp;amp;amp;amp;gt; tom3=jerry1
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 2&amp;amp;amp;amp;gt; tom3=jerry2
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 2&amp;amp;amp;amp;gt; tom3=jerry3
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 2&amp;amp;amp;amp;gt; tom_late=jerry1
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 2&amp;amp;amp;amp;gt; tom_late=jerry2
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 2&amp;amp;amp;amp;gt; tom_late=jerry3
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; ------------------&amp;amp;amp;amp;nbsp;原始邮件&amp;amp;amp;amp;nbsp;------------------
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 发件人:&amp;amp;amp;amp;nbsp;"Djeng Lee"<lee.roval@gmail.com&amp;amp;amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 发送时间:&amp;amp;amp;amp;nbsp;2020年4月4日(星期六) 晚上6:35
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 收件人:&amp;amp;amp;amp;nbsp;"user-zh@flink.apache.org"<user-zh@flink.apache.org
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 主题:&amp;amp;amp;amp;nbsp;Re: 回复: 回复: Flink双流Join问题
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 刚刚我说的不严谨
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; Start = 1000000055000 - (1000000055000 - 0 + 3000) % 3000 =
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 1000000053000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; End = 1000000053000 + 3000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; //源码位置,所以窗口开端并不是你传入首条记录的作为开端。窗口划分是从0时间戳切过来的。
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 文档说明:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; https://ci.apache.org/projects/flink/flink-docs-release-1.10/zh/dev/event_timestamps_watermarks.html
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 相关代码
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; public static long getWindowStartWithOffset(long timestamp, long
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; offset,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; long windowSize) {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;nbsp; return timestamp - (timestamp - offset + windowSize)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; % windowSize;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 在 2020/4/4 下午6:30,“忝忝向仧”<153488125@qq.com&amp;amp;amp;amp;gt; 写入:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; 额,你的意思是滚动3秒的窗口开始和结束应该是
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; 1000000055000 % 3 得出结果再拿到[start,end).
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; 比如1000000055000 % 3
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 的结果是1000000053000,那么窗口是[1000000053000,1000000056000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; 是这么理解吧
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; ------------------&amp;amp;amp;amp;amp;nbsp;原始邮件&amp;amp;amp;amp;amp;nbsp;------------------
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; 发件人:&amp;amp;amp;amp;amp;nbsp;"lee.roval"<
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; lee.roval@gmail.com&amp;amp;amp;amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; 发送时间:&amp;amp;amp;amp;amp;nbsp;2020年4月4日(星期六)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 晚上6:25
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; 收件人:&amp;amp;amp;amp;amp;nbsp;"
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; user-zh@flink.apache.org"<
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; user-zh@flink.apache.org&amp;amp;amp;amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; 主题:&amp;amp;amp;amp;amp;nbsp;Re: 回复: Flink双流Join问题
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; 55000的窗口分配,是对windowSize 求模然后拿到start 和
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; end。 不是从你首条记录开始算。
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; 在 2020/4/4 下午6:23,“忝忝向仧”<
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 153488125@qq.com&amp;amp;amp;amp;amp;gt; 写入:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; 对,我只是回复把前面那串省略了,没写.
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; [1000000053000,1000000056000),为什么是1000000053000开始?
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; 我第一条输入的是
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; 1,tom1,1000000055000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; ------------------&amp;amp;amp;amp;amp;amp;nbsp;原始邮件&amp;amp;amp;amp;amp;amp;nbsp;------------------
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 发件人:&amp;amp;amp;amp;amp;amp;nbsp;"libenchao"<libenchao@gmail.com
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 发送时间:&amp;amp;amp;amp;amp;amp;nbsp;2020年4月4日(星期六) 晚上6:20
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 收件人:&amp;amp;amp;amp;amp;amp;nbsp;"user-zh"<user-zh@flink.apache.org
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; 主题:&amp;amp;amp;amp;amp;amp;nbsp;Re:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; Flink双流Join问题
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 你的watermark不是56000,而是1000000056000吧。所以应该是[1000000053000,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; 1000000056000)是一个窗口吧。
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; 忝忝向仧 <153488125@qq.com
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 于2020年4月4日周六 下午6:16写道:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; 下发新的?
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 4是一个kafka的source,3是另外一个kafka的source.
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; 如果按照3秒的一个窗口
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; watermark触发窗口的条件是watermark_time&amp;amp;amp;amp;amp;amp;amp;gt;=window_endtime
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 也就是说[55000,57000)应该是一个窗口的.
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 我是这么理解的,但是结果56000后就输出了
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; currentTimeStamp:&amp;amp;amp;amp;amp;amp;amp;nbsp;1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 4&amp;amp;amp;amp;amp;amp;amp;gt; (1,tom1,1000000055000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; currentTimeStamp:&amp;amp;amp;amp;amp;amp;amp;nbsp;1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 4&amp;amp;amp;amp;amp;amp;amp;gt; (1,tom2,1000000056000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; currentTimeStamp:&amp;amp;amp;amp;amp;amp;amp;nbsp;1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 3&amp;amp;amp;amp;amp;amp;amp;gt; (1,jerry1,1000000055000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; currentTimeStamp:&amp;amp;amp;amp;amp;amp;amp;nbsp;1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 3&amp;amp;amp;amp;amp;amp;amp;gt; (1,jerry2,1000000056000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 2&amp;amp;amp;amp;amp;amp;amp;gt; tom1=jerry1
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; ------------------&amp;amp;amp;amp;amp;amp;amp;nbsp;原始邮件&amp;amp;amp;amp;amp;amp;amp;nbsp;------------------
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 发件人:&amp;amp;amp;amp;amp;amp;amp;nbsp;"lee.roval"<lee.roval@gmail.com
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 发送时间:&amp;amp;amp;amp;amp;amp;amp;nbsp;2020年4月4日(星期六) 晚上6:10
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 收件人:&amp;amp;amp;amp;amp;amp;amp;nbsp;"user-zh@flink.apache.org"<
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; user-zh@flink.apache.org
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 主题:&amp;amp;amp;amp;amp;amp;amp;nbsp;Re: Flink双流Join问题
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 56000后不是下发新的watermark了嘛
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; 在 2020/4/4
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 下午5:57,“忝忝向仧”<153488125@qq.com&amp;amp;amp;amp;amp;amp;amp;gt; 写入:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 各位好:&amp;amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; Flink双流Join遇到一个问题,能否解释下,谢谢.
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; ds1和ds2分别读取kafka两个流数据,使用event time和watermark特性,3s的一个翻滚窗口,定义如下:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 最后,join输出的时候,为什么触发窗口的数据第二条就触发了?
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 按照水印的触发条件应该是watermark_time&amp;amp;amp;amp;amp;amp;amp;amp;gt;=window_endtime.那么,这里应该是1000000057000这条数据来了后才会触发,但是结果却是56000就触发了.为什么?
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 定义的代码如下:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; DataStream<String&amp;amp;amp;amp;amp;amp;amp;amp;gt; stream1 = env
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; .addSource(new
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; FlinkKafkaConsumer09<String&amp;amp;amp;amp;amp;amp;amp;amp;gt;("stream1",
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; new
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; SimpleStringSchema(), properties).setStartFromLatest())
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; .assignTimestampsAndWatermarks(
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; new
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; AssignerWithPeriodicWatermarks<String&amp;amp;amp;amp;amp;amp;amp;amp;gt;() {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; long
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; currentTimeStamp = 0L;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; long
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; maxDelayAllowed = 0L;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; long
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; currentWaterMark;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; @Nullable
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; @Override
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; public
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; Watermark getCurrentWatermark() {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; currentWaterMark = currentTimeStamp-maxDelayAllowed;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; return new
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; Watermark(currentWaterMark);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; @Override
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; public long
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; extractTimestamp(String s, long l) {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; String[]
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; arr= s.split(" ");
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; long
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; timeStamp = Long.parseLong(arr[2]);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; currentTimeStamp = Math.max(timeStamp, currentTimeStamp);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; System.out.println("currentTimeStamp: " +&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; currentTimeStamp +",Key:" +
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; arr[0] +
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; ",EventTime:" + timeStamp + ",前一条数据的水位线:" + currentWaterMark);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; return
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; timeStamp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; );
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; DataStream<Tuple3<String,String,String&amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; ds1 =
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; stream1.map(new MapFunction<String,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; Tuple3<String,String,String&amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;gt;()
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; @Override
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; public Tuple3<String,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; String,String&amp;amp;amp;amp;amp;amp;amp;amp;gt; map(String s1) throws Exception
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; String[]
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; arr = s1.split(" ");
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; return
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; Tuple3.of(arr[0],arr[1],arr[2]);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; });
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; ds1.print();
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; DataStream<String&amp;amp;amp;amp;amp;amp;amp;amp;gt; stream2 = env
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; .addSource(new
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; FlinkKafkaConsumer09<String&amp;amp;amp;amp;amp;amp;amp;amp;gt;("stream2",
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; new
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; SimpleStringSchema(), properties).setStartFromLatest())
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; .assignTimestampsAndWatermarks(
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; new
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; AssignerWithPeriodicWatermarks<String&amp;amp;amp;amp;amp;amp;amp;amp;gt;() {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; long
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; currentTimeStamp = 0L;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; long
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; maxDelayAllowed = 0L;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; long
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; currentWaterMark;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; @Nullable
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; @Override
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; public
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; Watermark getCurrentWatermark() {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; currentWaterMark = currentTimeStamp-maxDelayAllowed;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; return new
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; Watermark(currentWaterMark);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; @Override
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; public long
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; extractTimestamp(String s, long l) {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; String[]
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; arr= s.split(" ");
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; long
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; timeStamp = Long.parseLong(arr[2]);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; currentTimeStamp = Math.max(timeStamp, currentTimeStamp);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; System.out.println("currentTimeStamp: " +&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; currentTimeStamp +",Key:" +
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; arr[0] +
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; ",EventTime:" + timeStamp + ",前一条数据的水位线:" + currentWaterMark);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; return
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; timeStamp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; );
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; DataStream<Tuple3<String,String,String&amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; ds2
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; =stream2.map(new MapFunction<String,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; Tuple3<String,String,String&amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;gt;()
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; @Override
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; public
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; Tuple3<String,String,String&amp;amp;amp;amp;amp;amp;amp;amp;gt; map(String s2)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; throws
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; Exception {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; String
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; [] arr =
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; s2.split(" ");
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; return
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; Tuple3.of(arr[0],arr[1],arr[2]);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; });
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; ds2.print();
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; ds1.join(ds2).where(new KeySelector<Tuple3<String,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; String,String&amp;amp;amp;amp;amp;amp;amp;amp;gt;,String&amp;amp;amp;amp;amp;amp;amp;amp;gt;() {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; @Override
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; public String
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; getKey(Tuple3<String, String,String&amp;amp;amp;amp;amp;amp;amp;amp;gt; value)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; throws
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; Exception {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; return
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; value.f0;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; }).equalTo(new
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; KeySelector<Tuple3<String, String
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; ,String&amp;amp;amp;amp;amp;amp;amp;amp;gt;, String&amp;amp;amp;amp;amp;amp;amp;amp;gt;() {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; @Override
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; public String
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; getKey(Tuple3<String, String,String&amp;amp;amp;amp;amp;amp;amp;amp;gt; value)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; throws
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; Exception {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; return
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; value.f0;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp; })
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; .window(TumblingEventTimeWindows.of(Time.seconds(3)))
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; .apply(new
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; JoinFunction<Tuple3<String,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; String,String&amp;amp;amp;amp;amp;amp;amp;amp;gt;, Tuple3<String,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; String,String&amp;amp;amp;amp;amp;amp;amp;amp;gt;,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; String&amp;amp;amp;amp;amp;amp;amp;amp;gt;() {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; @Override
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; public String
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; join(Tuple3<String, String,String&amp;amp;amp;amp;amp;amp;amp;amp;gt; value1,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; Tuple3<String,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; String,String&amp;amp;amp;amp;amp;amp;amp;amp;gt; value2) throws Exception {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; return
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt; value1.f1 +
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; "=" + value2.f1;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; }).print();
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 结果如下:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 4&amp;amp;amp;amp;amp;amp;amp;amp;gt; (1,tom1,1000000055000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 4&amp;amp;amp;amp;amp;amp;amp;amp;gt; (1,tom2,1000000056000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 3&amp;amp;amp;amp;amp;amp;amp;amp;gt; (1,jerry1,1000000055000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 3&amp;amp;amp;amp;amp;amp;amp;amp;gt; (1,jerry2,1000000056000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; 2&amp;amp;amp;amp;amp;amp;amp;amp;gt; tom1=jerry1
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; --
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; Benchao Li
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; School of Electronics
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; Engineering and Computer Science, Peking University
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; Tel:+86-15650713730
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; Email:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;gt; libenchao@gmail.com; libenchao@pku.edu.cn
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; --
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; Benchao Li
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; School of Electronics Engineering and Computer Science, Peking University
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; Tel:+86-15650713730
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; Email: libenchao@gmail.com; libenchao@pku.edu.cn
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Benchao Li
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; School of Electronics Engineering and Computer Science, Peking University
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Tel:+86-15650713730
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Email: libenchao@gmail.com; libenchao@pku.edu.cn

回复: 回复: 回复: 回复: Flink双流Join问题

Posted by 忝忝向仧 <15...@qq.com>.
你的意思是说,在flink消费kafka时候,每条记录给个1秒休眠间隔?
比如,这里加个休眠1秒?
DataStream<String&gt; stream1 = env
        .addSource(new FlinkKafkaConsumer09<String&gt;("stream1", new SimpleStringSchema(), properties).
                setStartFromLatest());






------------------&nbsp;原始邮件&nbsp;------------------
发件人:&nbsp;"Djeng Lee"<lee.roval@gmail.com&gt;;
发送时间:&nbsp;2020年4月5日(星期天) 中午11:26
收件人:&nbsp;"user-zh@flink.apache.org"<user-zh@flink.apache.org&gt;;

主题:&nbsp;Re: 回复: 回复: 回复: Flink双流Join问题



给kafka吐数据时每条记录之间休眠1秒试试.


文档位置
https://ci.apache.org/projects/flink/flink-docs-release-1.10/zh/dev/event_timestamps_watermarks.html
https://ci.apache.org/projects/flink/flink-docs-release-1.10/zh/dev/stream/operators/joining.html


AssignerWithPeriodicWatermarks assigns timestamps and generates watermarks periodically (possibly depending on the stream elements, or purely based on processing time).

The interval (every n milliseconds) in which the watermark will be generated is defined via ExecutionConfig.setAutoWatermarkInterval(...). The assigner’s getCurrentWatermark() method will be called each time, and a new watermark will be emitted if the returned watermark is non-null and larger than the previous watermark.

Here we show two simple examples of timestamp assigners that use periodic watermark generation. Note that Flink ships with a BoundedOutOfOrdernessTimestampExtractor similar to the BoundedOutOfOrdernessGenerator shown below, which you can read about here.

在 2020/4/5 上午10:21,“忝忝向仧”<153488125@qq.com&gt; 写入:

&nbsp;&nbsp;&nbsp; Hi,
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 感觉有点不对,我试着用stream1输入:
&nbsp;&nbsp;&nbsp; 1 tom1 1553503185000
&nbsp;&nbsp;&nbsp; 1 tom2 1553503186000
&nbsp;&nbsp;&nbsp; 1 tom3 1553503187000
&nbsp;&nbsp;&nbsp; 1 tom4 1553503188000
&nbsp;&nbsp;&nbsp; 1 tom_late 1553503185000
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; stream2输入:
&nbsp;&nbsp;&nbsp; 1 jerry2 1553503186000
&nbsp;&nbsp;&nbsp; 1 jerry3 1553503187000
&nbsp;&nbsp;&nbsp; 1 jerry4 1553503188000
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 但是结果打印的是:
&nbsp;&nbsp;&nbsp; currentTimeStamp: 1553503185000,Key:1,EventTime:1553503185000,前一条数据的水位线:0
&nbsp;&nbsp;&nbsp; 4&amp;gt; (1,tom1,1553503185000)
&nbsp;&nbsp;&nbsp; currentTimeStamp: 1553503186000,Key:1,EventTime:1553503186000,前一条数据的水位线:1553503185000
&nbsp;&nbsp;&nbsp; 4&amp;gt; (1,tom2,1553503186000)
&nbsp;&nbsp;&nbsp; currentTimeStamp: 1553503187000,Key:1,EventTime:1553503187000,前一条数据的水位线:1553503186000
&nbsp;&nbsp;&nbsp; 4&amp;gt; (1,tom3,1553503187000)
&nbsp;&nbsp;&nbsp; currentTimeStamp: 1553503188000,Key:1,EventTime:1553503188000,前一条数据的水位线:1553503187000
&nbsp;&nbsp;&nbsp; 4&amp;gt; (1,tom4,1553503188000)
&nbsp;&nbsp;&nbsp; currentTimeStamp: 1553503188000,Key:1,EventTime:1553503185000,前一条数据的水位线:1553503188000
&nbsp;&nbsp;&nbsp; 4&amp;gt; (1,tom_late,1553503185000)
&nbsp;&nbsp;&nbsp; currentTimeStamp: 1553503186000,Key:1,EventTime:1553503186000,前一条数据的水位线:0
&nbsp;&nbsp;&nbsp; 3&amp;gt; (1,jerry2,1553503186000)
&nbsp;&nbsp;&nbsp; currentTimeStamp: 1553503187000,Key:1,EventTime:1553503187000,前一条数据的水位线:1553503186000
&nbsp;&nbsp;&nbsp; 3&amp;gt; (1,jerry3,1553503187000)
&nbsp;&nbsp;&nbsp; currentTimeStamp: 1553503188000,Key:1,EventTime:1553503188000,前一条数据的水位线:1553503187000
&nbsp;&nbsp;&nbsp; 3&amp;gt; (1,jerry4,1553503188000)
&nbsp;&nbsp;&nbsp; 2&amp;gt; tom1=jerry2
&nbsp;&nbsp;&nbsp; 2&amp;gt; tom1=jerry3
&nbsp;&nbsp;&nbsp; 2&amp;gt; tom2=jerry2
&nbsp;&nbsp;&nbsp; 2&amp;gt; tom2=jerry3
&nbsp;&nbsp;&nbsp; 2&amp;gt; tom3=jerry2
&nbsp;&nbsp;&nbsp; 2&amp;gt; tom3=jerry3
&nbsp;&nbsp;&nbsp; 2&amp;gt; tom_late=jerry2
&nbsp;&nbsp;&nbsp; 2&amp;gt; tom_late=jerry3
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 我第二个流的窗口是[1553503186000,1553503188000),怎么判断出stream1中那条迟到的是没过期的?
&nbsp;&nbsp;&nbsp; 谢谢.
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; ------------------&amp;nbsp;原始邮件&amp;nbsp;------------------
&nbsp;&nbsp;&nbsp; 发件人:&amp;nbsp;"libenchao"<libenchao@gmail.com&amp;gt;;
&nbsp;&nbsp;&nbsp; 发送时间:&amp;nbsp;2020年4月5日(星期天) 上午10:04
&nbsp;&nbsp;&nbsp; 收件人:&amp;nbsp;"user-zh"<user-zh@flink.apache.org&amp;gt;;
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 主题:&amp;nbsp;Re: 回复: 回复: Flink双流Join问题
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 嗯,可以这么理解。
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 忝忝向仧 <153488125@qq.com&amp;gt; 于2020年4月4日周六 下午11:20写道:
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; &amp;gt; 额,明白了,意思是说两个流情况下
&nbsp;&nbsp;&nbsp; &amp;gt; 比如,stream1里面晚来的那条
&nbsp;&nbsp;&nbsp; &amp;gt; 1 tom_late 1553503185000的水印是1553503188000
&nbsp;&nbsp;&nbsp; &amp;gt; 但是stream2里面,这条1,jerry1,1553503185000的水印是1553503185000
&nbsp;&nbsp;&nbsp; &amp;gt; 所以取最小的,因此还是会被打印?
&nbsp;&nbsp;&nbsp; &amp;gt; 是这么理解么?
&nbsp;&nbsp;&nbsp; &amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; ------------------&amp;amp;nbsp;原始邮件&amp;amp;nbsp;------------------
&nbsp;&nbsp;&nbsp; &amp;gt; 发件人:&amp;amp;nbsp;"libenchao"<libenchao@gmail.com&amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;gt; 发送时间:&amp;amp;nbsp;2020年4月4日(星期六) 晚上11:04
&nbsp;&nbsp;&nbsp; &amp;gt; 收件人:&amp;amp;nbsp;"user-zh"<user-zh@flink.apache.org&amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; 主题:&amp;amp;nbsp;Re: 回复: 回复: Flink双流Join问题
&nbsp;&nbsp;&nbsp; &amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; 两个stream输入的场景,operator的watermark是取两者的最小值。
&nbsp;&nbsp;&nbsp; &amp;gt; 所以虽然这条数据在第一个流里面看起来已经是肯定迟到了,但是有可能看第二个流的watermark它还没有过期。
&nbsp;&nbsp;&nbsp; &amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; 忝忝向仧 <153488125@qq.com&amp;amp;gt; 于2020年4月4日周六 下午10:42写道:
&nbsp;&nbsp;&nbsp; &amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; Hi:
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp; &amp;amp;amp;nbsp; 还有个疑问,我特意构造了个乱序的消息,还是3秒一个窗口
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; stream1:
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 1 tom1 1553503185000
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 1 tom2 1553503186000
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 1 tom3 1553503187000
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 1 tom4 1553503188000
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 1 tom_late 1553503185000
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; stream2:
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 1 jerry1 1553503185000
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 1 jerry2 1553503186000
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 1 jerry3 1553503187000
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 1 jerry4 1553503188000
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 我代码还是之前的代码,定义水印都是maxDelayAllowed = 0L;也就是没有设置最大延时时间.
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 那么,tom_late这条乱序,在第一个窗口[1553503185000,1553503188000)内不应该被输出吧?
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 但是结果还是输出了,这个是为什么?
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;gt; 1553503185000,Key:1,EventTime:1553503185000,前一条数据的水位线:0
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 4&amp;amp;amp;gt; (1,tom1,1553503185000)
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 1553503186000,Key:1,EventTime:1553503186000,前一条数据的水位线:1553503185000
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 4&amp;amp;amp;gt; (1,tom2,1553503186000)
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 1553503187000,Key:1,EventTime:1553503187000,前一条数据的水位线:1553503186000
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 4&amp;amp;amp;gt; (1,tom3,1553503187000)
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 1553503188000,Key:1,EventTime:1553503188000,前一条数据的水位线:1553503187000
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 4&amp;amp;amp;gt; (1,tom4,1553503188000)
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 1553503188000,Key:1,EventTime:1553503185000,前一条数据的水位线:1553503188000
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 4&amp;amp;amp;gt; (1,tom_late,1553503185000)
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 1553503189000,Key:2,EventTime:1553503189000,前一条数据的水位线:1553503188000
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 4&amp;amp;amp;gt; (2,tom5,1553503189000)
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 1553503191000,Key:2,EventTime:1553503191000,前一条数据的水位线:1553503189000
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 4&amp;amp;amp;gt; (2,tom6,1553503191000)
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 1553503192000,Key:2,EventTime:1553503192000,前一条数据的水位线:1553503191000
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 4&amp;amp;amp;gt; (2,tom7,1553503192000)
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 1553503193000,Key:2,EventTime:1553503193000,前一条数据的水位线:1553503192000
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 4&amp;amp;amp;gt; (2,tom8,1553503193000)
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;gt; 1553503185000,Key:1,EventTime:1553503185000,前一条数据的水位线:0
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 3&amp;amp;amp;gt; (1,jerry1,1553503185000)
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 1553503186000,Key:1,EventTime:1553503186000,前一条数据的水位线:1553503185000
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 3&amp;amp;amp;gt; (1,jerry2,1553503186000)
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 1553503187000,Key:1,EventTime:1553503187000,前一条数据的水位线:1553503186000
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 3&amp;amp;amp;gt; (1,jerry3,1553503187000)
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 1553503188000,Key:1,EventTime:1553503188000,前一条数据的水位线:1553503187000
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 3&amp;amp;amp;gt; (1,jerry4,1553503188000)
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 2&amp;amp;amp;gt; tom1=jerry1
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 2&amp;amp;amp;gt; tom1=jerry2
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 2&amp;amp;amp;gt; tom1=jerry3
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 2&amp;amp;amp;gt; tom2=jerry1
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 2&amp;amp;amp;gt; tom2=jerry2
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 2&amp;amp;amp;gt; tom2=jerry3
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 2&amp;amp;amp;gt; tom3=jerry1
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 2&amp;amp;amp;gt; tom3=jerry2
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 2&amp;amp;amp;gt; tom3=jerry3
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 2&amp;amp;amp;gt; tom_late=jerry1
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 2&amp;amp;amp;gt; tom_late=jerry2
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 2&amp;amp;amp;gt; tom_late=jerry3
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; ------------------&amp;amp;amp;nbsp;原始邮件&amp;amp;amp;nbsp;------------------
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 发件人:&amp;amp;amp;nbsp;"Djeng Lee"<lee.roval@gmail.com&amp;amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 发送时间:&amp;amp;amp;nbsp;2020年4月4日(星期六) 晚上6:35
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 收件人:&amp;amp;amp;nbsp;"user-zh@flink.apache.org"<user-zh@flink.apache.org
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 主题:&amp;amp;amp;nbsp;Re: 回复: 回复: Flink双流Join问题
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 刚刚我说的不严谨
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; Start = 1000000055000 - (1000000055000 - 0 + 3000) % 3000 =
&nbsp;&nbsp;&nbsp; &amp;gt; 1000000053000
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; End = 1000000053000 + 3000
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; //源码位置,所以窗口开端并不是你传入首条记录的作为开端。窗口划分是从0时间戳切过来的。
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 文档说明:
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; https://ci.apache.org/projects/flink/flink-docs-release-1.10/zh/dev/event_timestamps_watermarks.html
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 相关代码
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; public static long getWindowStartWithOffset(long timestamp, long
&nbsp;&nbsp;&nbsp; &amp;gt; offset,
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; long windowSize) {
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;nbsp; return timestamp - (timestamp - offset + windowSize)
&nbsp;&nbsp;&nbsp; &amp;gt; % windowSize;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 在 2020/4/4 下午6:30,“忝忝向仧”<153488125@qq.com&amp;amp;amp;gt; 写入:
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 额,你的意思是滚动3秒的窗口开始和结束应该是
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 1000000055000 % 3 得出结果再拿到[start,end).
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 比如1000000055000 % 3
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 的结果是1000000053000,那么窗口是[1000000053000,1000000056000)
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 是这么理解吧
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; ------------------&amp;amp;amp;amp;nbsp;原始邮件&amp;amp;amp;amp;nbsp;------------------
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 发件人:&amp;amp;amp;amp;nbsp;"lee.roval"<
&nbsp;&nbsp;&nbsp; &amp;gt; lee.roval@gmail.com&amp;amp;amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 发送时间:&amp;amp;amp;amp;nbsp;2020年4月4日(星期六)
&nbsp;&nbsp;&nbsp; &amp;gt; 晚上6:25
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 收件人:&amp;amp;amp;amp;nbsp;"
&nbsp;&nbsp;&nbsp; &amp;gt; user-zh@flink.apache.org"<
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; user-zh@flink.apache.org&amp;amp;amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 主题:&amp;amp;amp;amp;nbsp;Re: 回复: Flink双流Join问题
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 55000的窗口分配,是对windowSize 求模然后拿到start 和
&nbsp;&nbsp;&nbsp; &amp;gt; end。 不是从你首条记录开始算。
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 在 2020/4/4 下午6:23,“忝忝向仧”<
&nbsp;&nbsp;&nbsp; &amp;gt; 153488125@qq.com&amp;amp;amp;amp;gt; 写入:
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; 对,我只是回复把前面那串省略了,没写.
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; [1000000053000,1000000056000),为什么是1000000053000开始?
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; 我第一条输入的是
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; 1,tom1,1000000055000
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; ------------------&amp;amp;amp;amp;amp;nbsp;原始邮件&amp;amp;amp;amp;amp;nbsp;------------------
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 发件人:&amp;amp;amp;amp;amp;nbsp;"libenchao"<libenchao@gmail.com
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 发送时间:&amp;amp;amp;amp;amp;nbsp;2020年4月4日(星期六) 晚上6:20
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 收件人:&amp;amp;amp;amp;amp;nbsp;"user-zh"<user-zh@flink.apache.org
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; 主题:&amp;amp;amp;amp;amp;nbsp;Re:
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; Flink双流Join问题
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 你的watermark不是56000,而是1000000056000吧。所以应该是[1000000053000,
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; 1000000056000)是一个窗口吧。
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; 忝忝向仧 <153488125@qq.com
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 于2020年4月4日周六 下午6:16写道:
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; 下发新的?
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 4是一个kafka的source,3是另外一个kafka的source.
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; 如果按照3秒的一个窗口
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; watermark触发窗口的条件是watermark_time&amp;amp;amp;amp;amp;amp;gt;=window_endtime
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 也就是说[55000,57000)应该是一个窗口的.
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 我是这么理解的,但是结果56000后就输出了
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; currentTimeStamp:&amp;amp;amp;amp;amp;amp;nbsp;1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 4&amp;amp;amp;amp;amp;amp;gt; (1,tom1,1000000055000)
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; currentTimeStamp:&amp;amp;amp;amp;amp;amp;nbsp;1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 4&amp;amp;amp;amp;amp;amp;gt; (1,tom2,1000000056000)
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; currentTimeStamp:&amp;amp;amp;amp;amp;amp;nbsp;1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 3&amp;amp;amp;amp;amp;amp;gt; (1,jerry1,1000000055000)
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; currentTimeStamp:&amp;amp;amp;amp;amp;amp;nbsp;1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 3&amp;amp;amp;amp;amp;amp;gt; (1,jerry2,1000000056000)
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 2&amp;amp;amp;amp;amp;amp;gt; tom1=jerry1
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; ------------------&amp;amp;amp;amp;amp;amp;nbsp;原始邮件&amp;amp;amp;amp;amp;amp;nbsp;------------------
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 发件人:&amp;amp;amp;amp;amp;amp;nbsp;"lee.roval"<lee.roval@gmail.com
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 发送时间:&amp;amp;amp;amp;amp;amp;nbsp;2020年4月4日(星期六) 晚上6:10
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 收件人:&amp;amp;amp;amp;amp;amp;nbsp;"user-zh@flink.apache.org"<
&nbsp;&nbsp;&nbsp; &amp;gt; user-zh@flink.apache.org
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 主题:&amp;amp;amp;amp;amp;amp;nbsp;Re: Flink双流Join问题
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 56000后不是下发新的watermark了嘛
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; 在 2020/4/4
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 下午5:57,“忝忝向仧”<153488125@qq.com&amp;amp;amp;amp;amp;amp;gt; 写入:
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 各位好:&amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; Flink双流Join遇到一个问题,能否解释下,谢谢.
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; ds1和ds2分别读取kafka两个流数据,使用event time和watermark特性,3s的一个翻滚窗口,定义如下:
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 最后,join输出的时候,为什么触发窗口的数据第二条就触发了?
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; 按照水印的触发条件应该是watermark_time&amp;amp;amp;amp;amp;amp;amp;gt;=window_endtime.那么,这里应该是1000000057000这条数据来了后才会触发,但是结果却是56000就触发了.为什么?
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; 定义的代码如下:
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; DataStream<String&amp;amp;amp;amp;amp;amp;amp;gt; stream1 = env
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; .addSource(new
&nbsp;&nbsp;&nbsp; &amp;gt; FlinkKafkaConsumer09<String&amp;amp;amp;amp;amp;amp;amp;gt;("stream1",
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; new
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; SimpleStringSchema(), properties).setStartFromLatest())
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; .assignTimestampsAndWatermarks(
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; new
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; AssignerWithPeriodicWatermarks<String&amp;amp;amp;amp;amp;amp;amp;gt;() {
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; long
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; currentTimeStamp = 0L;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; long
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; maxDelayAllowed = 0L;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; long
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; currentWaterMark;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; @Nullable
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; @Override
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; public
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; Watermark getCurrentWatermark() {
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; currentWaterMark = currentTimeStamp-maxDelayAllowed;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; return new
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; Watermark(currentWaterMark);
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; @Override
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; public long
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; extractTimestamp(String s, long l) {
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; String[]
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; arr= s.split(" ");
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; long
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; timeStamp = Long.parseLong(arr[2]);
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; currentTimeStamp = Math.max(timeStamp, currentTimeStamp);
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; System.out.println("currentTimeStamp: " +&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; currentTimeStamp +",Key:" +
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; arr[0] +
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; ",EventTime:" + timeStamp + ",前一条数据的水位线:" + currentWaterMark);
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; return
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; timeStamp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; );
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; DataStream<Tuple3<String,String,String&amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; ds1 =
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; stream1.map(new MapFunction<String,
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; Tuple3<String,String,String&amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;gt;()
&nbsp;&nbsp;&nbsp; &amp;gt; {
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; @Override
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; public Tuple3<String,
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; String,String&amp;amp;amp;amp;amp;amp;amp;gt; map(String s1) throws Exception
&nbsp;&nbsp;&nbsp; &amp;gt; {
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; String[]
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; arr = s1.split(" ");
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; return
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; Tuple3.of(arr[0],arr[1],arr[2]);
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; });
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; ds1.print();
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; DataStream<String&amp;amp;amp;amp;amp;amp;amp;gt; stream2 = env
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; .addSource(new
&nbsp;&nbsp;&nbsp; &amp;gt; FlinkKafkaConsumer09<String&amp;amp;amp;amp;amp;amp;amp;gt;("stream2",
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; new
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; SimpleStringSchema(), properties).setStartFromLatest())
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; .assignTimestampsAndWatermarks(
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; new
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; AssignerWithPeriodicWatermarks<String&amp;amp;amp;amp;amp;amp;amp;gt;() {
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; long
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; currentTimeStamp = 0L;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; long
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; maxDelayAllowed = 0L;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; long
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; currentWaterMark;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; @Nullable
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; @Override
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; public
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; Watermark getCurrentWatermark() {
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; currentWaterMark = currentTimeStamp-maxDelayAllowed;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; return new
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; Watermark(currentWaterMark);
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; @Override
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; public long
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; extractTimestamp(String s, long l) {
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; String[]
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; arr= s.split(" ");
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; long
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; timeStamp = Long.parseLong(arr[2]);
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; currentTimeStamp = Math.max(timeStamp, currentTimeStamp);
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; System.out.println("currentTimeStamp: " +&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; currentTimeStamp +",Key:" +
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; arr[0] +
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; ",EventTime:" + timeStamp + ",前一条数据的水位线:" + currentWaterMark);
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; return
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; timeStamp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; );
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; DataStream<Tuple3<String,String,String&amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; ds2
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; =stream2.map(new MapFunction<String,
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; Tuple3<String,String,String&amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;gt;()
&nbsp;&nbsp;&nbsp; &amp;gt; {
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; @Override
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; public
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; Tuple3<String,String,String&amp;amp;amp;amp;amp;amp;amp;gt; map(String s2)
&nbsp;&nbsp;&nbsp; &amp;gt; throws
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; Exception {
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; String
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; [] arr =
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; s2.split(" ");
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; return
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; Tuple3.of(arr[0],arr[1],arr[2]);
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; });
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; ds2.print();
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; ds1.join(ds2).where(new KeySelector<Tuple3<String,
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; String,String&amp;amp;amp;amp;amp;amp;amp;gt;,String&amp;amp;amp;amp;amp;amp;amp;gt;() {
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; @Override
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; public String
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; getKey(Tuple3<String, String,String&amp;amp;amp;amp;amp;amp;amp;gt; value)
&nbsp;&nbsp;&nbsp; &amp;gt; throws
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; Exception {
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; return
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; value.f0;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; }).equalTo(new
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; KeySelector<Tuple3<String, String
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; ,String&amp;amp;amp;amp;amp;amp;amp;gt;, String&amp;amp;amp;amp;amp;amp;amp;gt;() {
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; @Override
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; public String
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; getKey(Tuple3<String, String,String&amp;amp;amp;amp;amp;amp;amp;gt; value)
&nbsp;&nbsp;&nbsp; &amp;gt; throws
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; Exception {
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; return
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; value.f0;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; })
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; .window(TumblingEventTimeWindows.of(Time.seconds(3)))
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; .apply(new
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; JoinFunction<Tuple3<String,
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; String,String&amp;amp;amp;amp;amp;amp;amp;gt;, Tuple3<String,
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; String,String&amp;amp;amp;amp;amp;amp;amp;gt;,
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; String&amp;amp;amp;amp;amp;amp;amp;gt;() {
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; @Override
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; public String
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; join(Tuple3<String, String,String&amp;amp;amp;amp;amp;amp;amp;gt; value1,
&nbsp;&nbsp;&nbsp; &amp;gt; Tuple3<String,
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; String,String&amp;amp;amp;amp;amp;amp;amp;gt; value2) throws Exception {
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; return
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt; value1.f1 +
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; "=" + value2.f1;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; }).print();
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; 结果如下:
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 4&amp;amp;amp;amp;amp;amp;amp;gt; (1,tom1,1000000055000)
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 4&amp;amp;amp;amp;amp;amp;amp;gt; (1,tom2,1000000056000)
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 3&amp;amp;amp;amp;amp;amp;amp;gt; (1,jerry1,1000000055000)
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 3&amp;amp;amp;amp;amp;amp;amp;gt; (1,jerry2,1000000056000)
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; 2&amp;amp;amp;amp;amp;amp;amp;gt; tom1=jerry1
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; --
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; Benchao Li
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; School of Electronics
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; Engineering and Computer Science, Peking University
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; Tel:+86-15650713730
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; Email:
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;gt; libenchao@gmail.com; libenchao@pku.edu.cn
&nbsp;&nbsp;&nbsp; &amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; --
&nbsp;&nbsp;&nbsp; &amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; Benchao Li
&nbsp;&nbsp;&nbsp; &amp;gt; School of Electronics Engineering and Computer Science, Peking University
&nbsp;&nbsp;&nbsp; &amp;gt; Tel:+86-15650713730
&nbsp;&nbsp;&nbsp; &amp;gt; Email: libenchao@gmail.com; libenchao@pku.edu.cn
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; -- 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; Benchao Li
&nbsp;&nbsp;&nbsp; School of Electronics Engineering and Computer Science, Peking University
&nbsp;&nbsp;&nbsp; Tel:+86-15650713730
&nbsp;&nbsp;&nbsp; Email: libenchao@gmail.com; libenchao@pku.edu.cn

Re: 回复: 回复: 回复: Flink双流Join问题

Posted by Djeng Lee <le...@gmail.com>.
给kafka吐数据时每条记录之间休眠1秒试试.


文档位置
https://ci.apache.org/projects/flink/flink-docs-release-1.10/zh/dev/event_timestamps_watermarks.html
https://ci.apache.org/projects/flink/flink-docs-release-1.10/zh/dev/stream/operators/joining.html


AssignerWithPeriodicWatermarks assigns timestamps and generates watermarks periodically (possibly depending on the stream elements, or purely based on processing time).

The interval (every n milliseconds) in which the watermark will be generated is defined via ExecutionConfig.setAutoWatermarkInterval(...). The assigner’s getCurrentWatermark() method will be called each time, and a new watermark will be emitted if the returned watermark is non-null and larger than the previous watermark.

Here we show two simple examples of timestamp assigners that use periodic watermark generation. Note that Flink ships with a BoundedOutOfOrdernessTimestampExtractor similar to the BoundedOutOfOrdernessGenerator shown below, which you can read about here.

在 2020/4/5 上午10:21,“忝忝向仧”<15...@qq.com> 写入:

    Hi,
    
    
    感觉有点不对,我试着用stream1输入:
    1 tom1 1553503185000
    1 tom2 1553503186000
    1 tom3 1553503187000
    1 tom4 1553503188000
    1 tom_late 1553503185000
    
    
    
    stream2输入:
    1 jerry2 1553503186000
    1 jerry3 1553503187000
    1 jerry4 1553503188000
    
    
    
    但是结果打印的是:
    currentTimeStamp: 1553503185000,Key:1,EventTime:1553503185000,前一条数据的水位线:0
    4&gt; (1,tom1,1553503185000)
    currentTimeStamp: 1553503186000,Key:1,EventTime:1553503186000,前一条数据的水位线:1553503185000
    4&gt; (1,tom2,1553503186000)
    currentTimeStamp: 1553503187000,Key:1,EventTime:1553503187000,前一条数据的水位线:1553503186000
    4&gt; (1,tom3,1553503187000)
    currentTimeStamp: 1553503188000,Key:1,EventTime:1553503188000,前一条数据的水位线:1553503187000
    4&gt; (1,tom4,1553503188000)
    currentTimeStamp: 1553503188000,Key:1,EventTime:1553503185000,前一条数据的水位线:1553503188000
    4&gt; (1,tom_late,1553503185000)
    currentTimeStamp: 1553503186000,Key:1,EventTime:1553503186000,前一条数据的水位线:0
    3&gt; (1,jerry2,1553503186000)
    currentTimeStamp: 1553503187000,Key:1,EventTime:1553503187000,前一条数据的水位线:1553503186000
    3&gt; (1,jerry3,1553503187000)
    currentTimeStamp: 1553503188000,Key:1,EventTime:1553503188000,前一条数据的水位线:1553503187000
    3&gt; (1,jerry4,1553503188000)
    2&gt; tom1=jerry2
    2&gt; tom1=jerry3
    2&gt; tom2=jerry2
    2&gt; tom2=jerry3
    2&gt; tom3=jerry2
    2&gt; tom3=jerry3
    2&gt; tom_late=jerry2
    2&gt; tom_late=jerry3
    
    
    
    我第二个流的窗口是[1553503186000,1553503188000),怎么判断出stream1中那条迟到的是没过期的?
    谢谢.
    
    
    ------------------&nbsp;原始邮件&nbsp;------------------
    发件人:&nbsp;"libenchao"<libenchao@gmail.com&gt;;
    发送时间:&nbsp;2020年4月5日(星期天) 上午10:04
    收件人:&nbsp;"user-zh"<user-zh@flink.apache.org&gt;;
    
    主题:&nbsp;Re: 回复: 回复: Flink双流Join问题
    
    
    
    嗯,可以这么理解。
    
    忝忝向仧 <153488125@qq.com&gt; 于2020年4月4日周六 下午11:20写道:
    
    &gt; 额,明白了,意思是说两个流情况下
    &gt; 比如,stream1里面晚来的那条
    &gt; 1 tom_late 1553503185000的水印是1553503188000
    &gt; 但是stream2里面,这条1,jerry1,1553503185000的水印是1553503185000
    &gt; 所以取最小的,因此还是会被打印?
    &gt; 是这么理解么?
    &gt;
    &gt;
    &gt;
    &gt;
    &gt;
    &gt;
    &gt; ------------------&amp;nbsp;原始邮件&amp;nbsp;------------------
    &gt; 发件人:&amp;nbsp;"libenchao"<libenchao@gmail.com&amp;gt;;
    &gt; 发送时间:&amp;nbsp;2020年4月4日(星期六) 晚上11:04
    &gt; 收件人:&amp;nbsp;"user-zh"<user-zh@flink.apache.org&amp;gt;;
    &gt;
    &gt; 主题:&amp;nbsp;Re: 回复: 回复: Flink双流Join问题
    &gt;
    &gt;
    &gt;
    &gt; 两个stream输入的场景,operator的watermark是取两者的最小值。
    &gt; 所以虽然这条数据在第一个流里面看起来已经是肯定迟到了,但是有可能看第二个流的watermark它还没有过期。
    &gt;
    &gt;
    &gt; 忝忝向仧 <153488125@qq.com&amp;gt; 于2020年4月4日周六 下午10:42写道:
    &gt;
    &gt; &amp;gt; Hi:
    &gt; &amp;gt; &amp;amp;nbsp; &amp;amp;nbsp; 还有个疑问,我特意构造了个乱序的消息,还是3秒一个窗口
    &gt; &amp;gt; stream1:
    &gt; &amp;gt; 1 tom1 1553503185000
    &gt; &amp;gt; 1 tom2 1553503186000
    &gt; &amp;gt; 1 tom3 1553503187000
    &gt; &amp;gt; 1 tom4 1553503188000
    &gt; &amp;gt; 1 tom_late 1553503185000
    &gt; &amp;gt;
    &gt; &amp;gt;
    &gt; &amp;gt;
    &gt; &amp;gt; stream2:
    &gt; &amp;gt; 1 jerry1 1553503185000
    &gt; &amp;gt; 1 jerry2 1553503186000
    &gt; &amp;gt; 1 jerry3 1553503187000
    &gt; &amp;gt; 1 jerry4 1553503188000
    &gt; &amp;gt;
    &gt; &amp;gt;
    &gt; &amp;gt; 我代码还是之前的代码,定义水印都是maxDelayAllowed = 0L;也就是没有设置最大延时时间.
    &gt; &amp;gt; 那么,tom_late这条乱序,在第一个窗口[1553503185000,1553503188000)内不应该被输出吧?
    &gt; &amp;gt; 但是结果还是输出了,这个是为什么?
    &gt; &amp;gt;
    &gt; &amp;gt;
    &gt; &amp;gt; currentTimeStamp:
    &gt; 1553503185000,Key:1,EventTime:1553503185000,前一条数据的水位线:0
    &gt; &amp;gt; 4&amp;amp;gt; (1,tom1,1553503185000)
    &gt; &amp;gt; currentTimeStamp:
    &gt; &amp;gt; 1553503186000,Key:1,EventTime:1553503186000,前一条数据的水位线:1553503185000
    &gt; &amp;gt; 4&amp;amp;gt; (1,tom2,1553503186000)
    &gt; &amp;gt; currentTimeStamp:
    &gt; &amp;gt; 1553503187000,Key:1,EventTime:1553503187000,前一条数据的水位线:1553503186000
    &gt; &amp;gt; 4&amp;amp;gt; (1,tom3,1553503187000)
    &gt; &amp;gt; currentTimeStamp:
    &gt; &amp;gt; 1553503188000,Key:1,EventTime:1553503188000,前一条数据的水位线:1553503187000
    &gt; &amp;gt; 4&amp;amp;gt; (1,tom4,1553503188000)
    &gt; &amp;gt; currentTimeStamp:
    &gt; &amp;gt; 1553503188000,Key:1,EventTime:1553503185000,前一条数据的水位线:1553503188000
    &gt; &amp;gt; 4&amp;amp;gt; (1,tom_late,1553503185000)
    &gt; &amp;gt; currentTimeStamp:
    &gt; &amp;gt; 1553503189000,Key:2,EventTime:1553503189000,前一条数据的水位线:1553503188000
    &gt; &amp;gt; 4&amp;amp;gt; (2,tom5,1553503189000)
    &gt; &amp;gt; currentTimeStamp:
    &gt; &amp;gt; 1553503191000,Key:2,EventTime:1553503191000,前一条数据的水位线:1553503189000
    &gt; &amp;gt; 4&amp;amp;gt; (2,tom6,1553503191000)
    &gt; &amp;gt; currentTimeStamp:
    &gt; &amp;gt; 1553503192000,Key:2,EventTime:1553503192000,前一条数据的水位线:1553503191000
    &gt; &amp;gt; 4&amp;amp;gt; (2,tom7,1553503192000)
    &gt; &amp;gt; currentTimeStamp:
    &gt; &amp;gt; 1553503193000,Key:2,EventTime:1553503193000,前一条数据的水位线:1553503192000
    &gt; &amp;gt; 4&amp;amp;gt; (2,tom8,1553503193000)
    &gt; &amp;gt; currentTimeStamp:
    &gt; 1553503185000,Key:1,EventTime:1553503185000,前一条数据的水位线:0
    &gt; &amp;gt; 3&amp;amp;gt; (1,jerry1,1553503185000)
    &gt; &amp;gt; currentTimeStamp:
    &gt; &amp;gt; 1553503186000,Key:1,EventTime:1553503186000,前一条数据的水位线:1553503185000
    &gt; &amp;gt; 3&amp;amp;gt; (1,jerry2,1553503186000)
    &gt; &amp;gt; currentTimeStamp:
    &gt; &amp;gt; 1553503187000,Key:1,EventTime:1553503187000,前一条数据的水位线:1553503186000
    &gt; &amp;gt; 3&amp;amp;gt; (1,jerry3,1553503187000)
    &gt; &amp;gt; currentTimeStamp:
    &gt; &amp;gt; 1553503188000,Key:1,EventTime:1553503188000,前一条数据的水位线:1553503187000
    &gt; &amp;gt; 3&amp;amp;gt; (1,jerry4,1553503188000)
    &gt; &amp;gt; 2&amp;amp;gt; tom1=jerry1
    &gt; &amp;gt; 2&amp;amp;gt; tom1=jerry2
    &gt; &amp;gt; 2&amp;amp;gt; tom1=jerry3
    &gt; &amp;gt; 2&amp;amp;gt; tom2=jerry1
    &gt; &amp;gt; 2&amp;amp;gt; tom2=jerry2
    &gt; &amp;gt; 2&amp;amp;gt; tom2=jerry3
    &gt; &amp;gt; 2&amp;amp;gt; tom3=jerry1
    &gt; &amp;gt; 2&amp;amp;gt; tom3=jerry2
    &gt; &amp;gt; 2&amp;amp;gt; tom3=jerry3
    &gt; &amp;gt; 2&amp;amp;gt; tom_late=jerry1
    &gt; &amp;gt; 2&amp;amp;gt; tom_late=jerry2
    &gt; &amp;gt; 2&amp;amp;gt; tom_late=jerry3
    &gt; &amp;gt;
    &gt; &amp;gt;
    &gt; &amp;gt;
    &gt; &amp;gt;
    &gt; &amp;gt;
    &gt; &amp;gt;
    &gt; &amp;gt;
    &gt; &amp;gt;
    &gt; &amp;gt;
    &gt; &amp;gt;
    &gt; &amp;gt;
    &gt; &amp;gt;
    &gt; &amp;gt; ------------------&amp;amp;nbsp;原始邮件&amp;amp;nbsp;------------------
    &gt; &amp;gt; 发件人:&amp;amp;nbsp;"Djeng Lee"<lee.roval@gmail.com&amp;amp;gt;;
    &gt; &amp;gt; 发送时间:&amp;amp;nbsp;2020年4月4日(星期六) 晚上6:35
    &gt; &amp;gt; 收件人:&amp;amp;nbsp;"user-zh@flink.apache.org"<user-zh@flink.apache.org
    &gt; &amp;amp;gt;;
    &gt; &amp;gt;
    &gt; &amp;gt; 主题:&amp;amp;nbsp;Re: 回复: 回复: Flink双流Join问题
    &gt; &amp;gt;
    &gt; &amp;gt;
    &gt; &amp;gt;
    &gt; &amp;gt; 刚刚我说的不严谨
    &gt; &amp;gt;
    &gt; &amp;gt; Start = 1000000055000 - (1000000055000 - 0 + 3000) % 3000 =
    &gt; 1000000053000
    &gt; &amp;gt; End = 1000000053000 + 3000
    &gt; &amp;gt;
    &gt; &amp;gt; //源码位置,所以窗口开端并不是你传入首条记录的作为开端。窗口划分是从0时间戳切过来的。
    &gt; &amp;gt;
    &gt; &amp;gt; 文档说明:
    &gt; &amp;gt;
    &gt; https://ci.apache.org/projects/flink/flink-docs-release-1.10/zh/dev/event_timestamps_watermarks.html
    &gt; &amp;gt;
    &gt; &amp;gt; 相关代码
    &gt; &amp;gt; public static long getWindowStartWithOffset(long timestamp, long
    &gt; offset,
    &gt; &amp;gt; long windowSize) {
    &gt; &amp;gt; &amp;amp;nbsp;&amp;nbsp; return timestamp - (timestamp - offset + windowSize)
    &gt; % windowSize;
    &gt; &amp;gt; }
    &gt; &amp;gt;
    &gt; &amp;gt; 在 2020/4/4 下午6:30,“忝忝向仧”<153488125@qq.com&amp;amp;gt; 写入:
    &gt; &amp;gt;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 额,你的意思是滚动3秒的窗口开始和结束应该是
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 1000000055000 % 3 得出结果再拿到[start,end).
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 比如1000000055000 % 3
    &gt; &amp;gt; 的结果是1000000053000,那么窗口是[1000000053000,1000000056000)
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 是这么理解吧
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;gt; ------------------&amp;amp;amp;nbsp;原始邮件&amp;amp;amp;nbsp;------------------
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 发件人:&amp;amp;amp;nbsp;"lee.roval"<
    &gt; lee.roval@gmail.com&amp;amp;amp;gt;;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 发送时间:&amp;amp;amp;nbsp;2020年4月4日(星期六)
    &gt; 晚上6:25
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 收件人:&amp;amp;amp;nbsp;"
    &gt; user-zh@flink.apache.org"<
    &gt; &amp;gt; user-zh@flink.apache.org&amp;amp;amp;gt;;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 主题:&amp;amp;amp;nbsp;Re: 回复: Flink双流Join问题
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 55000的窗口分配,是对windowSize 求模然后拿到start 和
    &gt; end。 不是从你首条记录开始算。
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 在 2020/4/4 下午6:23,“忝忝向仧”<
    &gt; 153488125@qq.com&amp;amp;amp;gt; 写入:
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 对,我只是回复把前面那串省略了,没写.
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &gt; &amp;gt; [1000000053000,1000000056000),为什么是1000000053000开始?
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 我第一条输入的是
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 1,tom1,1000000055000
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &gt; &amp;gt;
    &gt; ------------------&amp;amp;amp;amp;nbsp;原始邮件&amp;amp;amp;amp;nbsp;------------------
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &gt; &amp;gt; 发件人:&amp;amp;amp;amp;nbsp;"libenchao"<libenchao@gmail.com
    &gt; &amp;amp;amp;amp;gt;;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &gt; &amp;gt; 发送时间:&amp;amp;amp;amp;nbsp;2020年4月4日(星期六) 晚上6:20
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &gt; &amp;gt; 收件人:&amp;amp;amp;amp;nbsp;"user-zh"<user-zh@flink.apache.org
    &gt; &amp;amp;amp;amp;gt;;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 主题:&amp;amp;amp;amp;nbsp;Re:
    &gt; &amp;gt; Flink双流Join问题
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &gt; &amp;gt; 你的watermark不是56000,而是1000000056000吧。所以应该是[1000000053000,
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 1000000056000)是一个窗口吧。
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 忝忝向仧 <153488125@qq.com
    &gt; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; 于2020年4月4日周六 下午6:16写道:
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; 下发新的?
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; 4是一个kafka的source,3是另外一个kafka的source.
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; 如果按照3秒的一个窗口
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; watermark触发窗口的条件是watermark_time&amp;amp;amp;amp;amp;gt;=window_endtime
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; 也就是说[55000,57000)应该是一个窗口的.
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; 我是这么理解的,但是结果56000后就输出了
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; currentTimeStamp:&amp;amp;amp;amp;amp;nbsp;1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; 4&amp;amp;amp;amp;amp;gt; (1,tom1,1000000055000)
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; currentTimeStamp:&amp;amp;amp;amp;amp;nbsp;1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; 4&amp;amp;amp;amp;amp;gt; (1,tom2,1000000056000)
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; currentTimeStamp:&amp;amp;amp;amp;amp;nbsp;1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; 3&amp;amp;amp;amp;amp;gt; (1,jerry1,1000000055000)
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; currentTimeStamp:&amp;amp;amp;amp;amp;nbsp;1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; 3&amp;amp;amp;amp;amp;gt; (1,jerry2,1000000056000)
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; 2&amp;amp;amp;amp;amp;gt; tom1=jerry1
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; ------------------&amp;amp;amp;amp;amp;nbsp;原始邮件&amp;amp;amp;amp;amp;nbsp;------------------
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; 发件人:&amp;amp;amp;amp;amp;nbsp;"lee.roval"<lee.roval@gmail.com
    &gt; &amp;amp;amp;amp;amp;gt;;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; 发送时间:&amp;amp;amp;amp;amp;nbsp;2020年4月4日(星期六) 晚上6:10
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; 收件人:&amp;amp;amp;amp;amp;nbsp;"user-zh@flink.apache.org"<
    &gt; user-zh@flink.apache.org
    &gt; &amp;gt; &amp;amp;amp;amp;amp;gt;;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; 主题:&amp;amp;amp;amp;amp;nbsp;Re: Flink双流Join问题
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; 56000后不是下发新的watermark了嘛
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; 在 2020/4/4
    &gt; &amp;gt; 下午5:57,“忝忝向仧”<153488125@qq.com&amp;amp;amp;amp;amp;gt; 写入:
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; 各位好:&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; Flink双流Join遇到一个问题,能否解释下,谢谢.
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; ds1和ds2分别读取kafka两个流数据,使用event time和watermark特性,3s的一个翻滚窗口,定义如下:
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; 最后,join输出的时候,为什么触发窗口的数据第二条就触发了?
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; 按照水印的触发条件应该是watermark_time&amp;amp;amp;amp;amp;amp;gt;=window_endtime.那么,这里应该是1000000057000这条数据来了后才会触发,但是结果却是56000就触发了.为什么?
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; 定义的代码如下:
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; DataStream<String&amp;amp;amp;amp;amp;amp;gt; stream1 = env
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; .addSource(new
    &gt; FlinkKafkaConsumer09<String&amp;amp;amp;amp;amp;amp;gt;("stream1",
    &gt; &amp;gt; new
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; SimpleStringSchema(), properties).setStartFromLatest())
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; .assignTimestampsAndWatermarks(
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; new
    &gt; &amp;gt; AssignerWithPeriodicWatermarks<String&amp;amp;amp;amp;amp;amp;gt;() {
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; long
    &gt; &amp;gt; currentTimeStamp = 0L;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; long
    &gt; &amp;gt; maxDelayAllowed = 0L;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; long
    &gt; &amp;gt; currentWaterMark;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; @Nullable
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; @Override
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; public
    &gt; &amp;gt; Watermark getCurrentWatermark() {
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; currentWaterMark = currentTimeStamp-maxDelayAllowed;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; return new
    &gt; &amp;gt; Watermark(currentWaterMark);
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; }
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; @Override
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; public long
    &gt; &amp;gt; extractTimestamp(String s, long l) {
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; String[]
    &gt; &amp;gt; arr= s.split(" ");
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; long
    &gt; &amp;gt; timeStamp = Long.parseLong(arr[2]);
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; currentTimeStamp = Math.max(timeStamp, currentTimeStamp);
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; System.out.println("currentTimeStamp: " +&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; currentTimeStamp +",Key:" +
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; arr[0] +
    &gt; &amp;gt; ",EventTime:" + timeStamp + ",前一条数据的水位线:" + currentWaterMark);
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; return
    &gt; &amp;gt; timeStamp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; }
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; }
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; );
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt;
    &gt; DataStream<Tuple3<String,String,String&amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; ds1 =
    &gt; &amp;gt; stream1.map(new MapFunction<String,
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; Tuple3<String,String,String&amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;gt;()
    &gt; {
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; @Override
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; public Tuple3<String,
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; String,String&amp;amp;amp;amp;amp;amp;gt; map(String s1) throws Exception
    &gt; {
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; String[]
    &gt; &amp;gt; arr = s1.split(" ");
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; return
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; Tuple3.of(arr[0],arr[1],arr[2]);
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; }
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; });
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; ds1.print();
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; DataStream<String&amp;amp;amp;amp;amp;amp;gt; stream2 = env
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; .addSource(new
    &gt; FlinkKafkaConsumer09<String&amp;amp;amp;amp;amp;amp;gt;("stream2",
    &gt; &amp;gt; new
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; SimpleStringSchema(), properties).setStartFromLatest())
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; .assignTimestampsAndWatermarks(
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; new
    &gt; &amp;gt; AssignerWithPeriodicWatermarks<String&amp;amp;amp;amp;amp;amp;gt;() {
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; long
    &gt; &amp;gt; currentTimeStamp = 0L;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; long
    &gt; &amp;gt; maxDelayAllowed = 0L;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; long
    &gt; &amp;gt; currentWaterMark;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; @Nullable
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; @Override
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; public
    &gt; &amp;gt; Watermark getCurrentWatermark() {
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; currentWaterMark = currentTimeStamp-maxDelayAllowed;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; return new
    &gt; &amp;gt; Watermark(currentWaterMark);
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; }
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; @Override
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; public long
    &gt; &amp;gt; extractTimestamp(String s, long l) {
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; String[]
    &gt; &amp;gt; arr= s.split(" ");
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; long
    &gt; &amp;gt; timeStamp = Long.parseLong(arr[2]);
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; currentTimeStamp = Math.max(timeStamp, currentTimeStamp);
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; System.out.println("currentTimeStamp: " +&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; currentTimeStamp +",Key:" +
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; arr[0] +
    &gt; &amp;gt; ",EventTime:" + timeStamp + ",前一条数据的水位线:" + currentWaterMark);
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; return
    &gt; &amp;gt; timeStamp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; }
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; }
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; );
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt;
    &gt; DataStream<Tuple3<String,String,String&amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; ds2
    &gt; &amp;gt; =stream2.map(new MapFunction<String,
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; Tuple3<String,String,String&amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;gt;()
    &gt; {
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; @Override
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; public
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; Tuple3<String,String,String&amp;amp;amp;amp;amp;amp;gt; map(String s2)
    &gt; throws
    &gt; &amp;gt; Exception {
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; String
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; [] arr =
    &gt; &amp;gt; s2.split(" ");
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; return
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; Tuple3.of(arr[0],arr[1],arr[2]);
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; }
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; });
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; ds2.print();
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; ds1.join(ds2).where(new KeySelector<Tuple3<String,
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; String,String&amp;amp;amp;amp;amp;amp;gt;,String&amp;amp;amp;amp;amp;amp;gt;() {
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; @Override
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; public String
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; getKey(Tuple3<String, String,String&amp;amp;amp;amp;amp;amp;gt; value)
    &gt; throws
    &gt; &amp;gt; Exception {
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; return
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; value.f0;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; }
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; }).equalTo(new
    &gt; &amp;gt; KeySelector<Tuple3<String, String
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; ,String&amp;amp;amp;amp;amp;amp;gt;, String&amp;amp;amp;amp;amp;amp;gt;() {
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; @Override
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; public String
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; getKey(Tuple3<String, String,String&amp;amp;amp;amp;amp;amp;gt; value)
    &gt; throws
    &gt; &amp;gt; Exception {
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; return
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; value.f0;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; }
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; })
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; .window(TumblingEventTimeWindows.of(Time.seconds(3)))
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; .apply(new
    &gt; &amp;gt; JoinFunction<Tuple3<String,
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; String,String&amp;amp;amp;amp;amp;amp;gt;, Tuple3<String,
    &gt; &amp;gt; String,String&amp;amp;amp;amp;amp;amp;gt;,
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; String&amp;amp;amp;amp;amp;amp;gt;() {
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; @Override
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; public String
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; join(Tuple3<String, String,String&amp;amp;amp;amp;amp;amp;gt; value1,
    &gt; Tuple3<String,
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; String,String&amp;amp;amp;amp;amp;amp;gt; value2) throws Exception {
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; return
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; value1.f1 +
    &gt; &amp;gt; "=" + value2.f1;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt;
    &gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; }
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; }).print();
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; 结果如下:
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; currentTimeStamp:
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; 1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; 4&amp;amp;amp;amp;amp;amp;gt; (1,tom1,1000000055000)
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; currentTimeStamp:
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; 1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; 4&amp;amp;amp;amp;amp;amp;gt; (1,tom2,1000000056000)
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; currentTimeStamp:
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; 1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; 3&amp;amp;amp;amp;amp;amp;gt; (1,jerry1,1000000055000)
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; currentTimeStamp:
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; 1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; 3&amp;amp;amp;amp;amp;amp;gt; (1,jerry2,1000000056000)
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
    &gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
    &gt; &amp;gt; 2&amp;amp;amp;amp;amp;amp;gt; tom1=jerry1
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; --
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; Benchao Li
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; School of Electronics
    &gt; &amp;gt; Engineering and Computer Science, Peking University
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; Tel:+86-15650713730
    &gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; Email:
    &gt; &amp;gt; libenchao@gmail.com; libenchao@pku.edu.cn
    &gt;
    &gt;
    &gt;
    &gt; --
    &gt;
    &gt; Benchao Li
    &gt; School of Electronics Engineering and Computer Science, Peking University
    &gt; Tel:+86-15650713730
    &gt; Email: libenchao@gmail.com; libenchao@pku.edu.cn
    
    
    
    -- 
    
    Benchao Li
    School of Electronics Engineering and Computer Science, Peking University
    Tel:+86-15650713730
    Email: libenchao@gmail.com; libenchao@pku.edu.cn

回复: 回复: 回复: Flink双流Join问题

Posted by 忝忝向仧 <15...@qq.com>.
Hi,


感觉有点不对,我试着用stream1输入:
1 tom1 1553503185000
1 tom2 1553503186000
1 tom3 1553503187000
1 tom4 1553503188000
1 tom_late 1553503185000



stream2输入:
1 jerry2 1553503186000
1 jerry3 1553503187000
1 jerry4 1553503188000



但是结果打印的是:
currentTimeStamp: 1553503185000,Key:1,EventTime:1553503185000,前一条数据的水位线:0
4&gt; (1,tom1,1553503185000)
currentTimeStamp: 1553503186000,Key:1,EventTime:1553503186000,前一条数据的水位线:1553503185000
4&gt; (1,tom2,1553503186000)
currentTimeStamp: 1553503187000,Key:1,EventTime:1553503187000,前一条数据的水位线:1553503186000
4&gt; (1,tom3,1553503187000)
currentTimeStamp: 1553503188000,Key:1,EventTime:1553503188000,前一条数据的水位线:1553503187000
4&gt; (1,tom4,1553503188000)
currentTimeStamp: 1553503188000,Key:1,EventTime:1553503185000,前一条数据的水位线:1553503188000
4&gt; (1,tom_late,1553503185000)
currentTimeStamp: 1553503186000,Key:1,EventTime:1553503186000,前一条数据的水位线:0
3&gt; (1,jerry2,1553503186000)
currentTimeStamp: 1553503187000,Key:1,EventTime:1553503187000,前一条数据的水位线:1553503186000
3&gt; (1,jerry3,1553503187000)
currentTimeStamp: 1553503188000,Key:1,EventTime:1553503188000,前一条数据的水位线:1553503187000
3&gt; (1,jerry4,1553503188000)
2&gt; tom1=jerry2
2&gt; tom1=jerry3
2&gt; tom2=jerry2
2&gt; tom2=jerry3
2&gt; tom3=jerry2
2&gt; tom3=jerry3
2&gt; tom_late=jerry2
2&gt; tom_late=jerry3



我第二个流的窗口是[1553503186000,1553503188000),怎么判断出stream1中那条迟到的是没过期的?
谢谢.


------------------&nbsp;原始邮件&nbsp;------------------
发件人:&nbsp;"libenchao"<libenchao@gmail.com&gt;;
发送时间:&nbsp;2020年4月5日(星期天) 上午10:04
收件人:&nbsp;"user-zh"<user-zh@flink.apache.org&gt;;

主题:&nbsp;Re: 回复: 回复: Flink双流Join问题



嗯,可以这么理解。

忝忝向仧 <153488125@qq.com&gt; 于2020年4月4日周六 下午11:20写道:

&gt; 额,明白了,意思是说两个流情况下
&gt; 比如,stream1里面晚来的那条
&gt; 1 tom_late 1553503185000的水印是1553503188000
&gt; 但是stream2里面,这条1,jerry1,1553503185000的水印是1553503185000
&gt; 所以取最小的,因此还是会被打印?
&gt; 是这么理解么?
&gt;
&gt;
&gt;
&gt;
&gt;
&gt;
&gt; ------------------&amp;nbsp;原始邮件&amp;nbsp;------------------
&gt; 发件人:&amp;nbsp;"libenchao"<libenchao@gmail.com&amp;gt;;
&gt; 发送时间:&amp;nbsp;2020年4月4日(星期六) 晚上11:04
&gt; 收件人:&amp;nbsp;"user-zh"<user-zh@flink.apache.org&amp;gt;;
&gt;
&gt; 主题:&amp;nbsp;Re: 回复: 回复: Flink双流Join问题
&gt;
&gt;
&gt;
&gt; 两个stream输入的场景,operator的watermark是取两者的最小值。
&gt; 所以虽然这条数据在第一个流里面看起来已经是肯定迟到了,但是有可能看第二个流的watermark它还没有过期。
&gt;
&gt;
&gt; 忝忝向仧 <153488125@qq.com&amp;gt; 于2020年4月4日周六 下午10:42写道:
&gt;
&gt; &amp;gt; Hi:
&gt; &amp;gt; &amp;amp;nbsp; &amp;amp;nbsp; 还有个疑问,我特意构造了个乱序的消息,还是3秒一个窗口
&gt; &amp;gt; stream1:
&gt; &amp;gt; 1 tom1 1553503185000
&gt; &amp;gt; 1 tom2 1553503186000
&gt; &amp;gt; 1 tom3 1553503187000
&gt; &amp;gt; 1 tom4 1553503188000
&gt; &amp;gt; 1 tom_late 1553503185000
&gt; &amp;gt;
&gt; &amp;gt;
&gt; &amp;gt;
&gt; &amp;gt; stream2:
&gt; &amp;gt; 1 jerry1 1553503185000
&gt; &amp;gt; 1 jerry2 1553503186000
&gt; &amp;gt; 1 jerry3 1553503187000
&gt; &amp;gt; 1 jerry4 1553503188000
&gt; &amp;gt;
&gt; &amp;gt;
&gt; &amp;gt; 我代码还是之前的代码,定义水印都是maxDelayAllowed = 0L;也就是没有设置最大延时时间.
&gt; &amp;gt; 那么,tom_late这条乱序,在第一个窗口[1553503185000,1553503188000)内不应该被输出吧?
&gt; &amp;gt; 但是结果还是输出了,这个是为什么?
&gt; &amp;gt;
&gt; &amp;gt;
&gt; &amp;gt; currentTimeStamp:
&gt; 1553503185000,Key:1,EventTime:1553503185000,前一条数据的水位线:0
&gt; &amp;gt; 4&amp;amp;gt; (1,tom1,1553503185000)
&gt; &amp;gt; currentTimeStamp:
&gt; &amp;gt; 1553503186000,Key:1,EventTime:1553503186000,前一条数据的水位线:1553503185000
&gt; &amp;gt; 4&amp;amp;gt; (1,tom2,1553503186000)
&gt; &amp;gt; currentTimeStamp:
&gt; &amp;gt; 1553503187000,Key:1,EventTime:1553503187000,前一条数据的水位线:1553503186000
&gt; &amp;gt; 4&amp;amp;gt; (1,tom3,1553503187000)
&gt; &amp;gt; currentTimeStamp:
&gt; &amp;gt; 1553503188000,Key:1,EventTime:1553503188000,前一条数据的水位线:1553503187000
&gt; &amp;gt; 4&amp;amp;gt; (1,tom4,1553503188000)
&gt; &amp;gt; currentTimeStamp:
&gt; &amp;gt; 1553503188000,Key:1,EventTime:1553503185000,前一条数据的水位线:1553503188000
&gt; &amp;gt; 4&amp;amp;gt; (1,tom_late,1553503185000)
&gt; &amp;gt; currentTimeStamp:
&gt; &amp;gt; 1553503189000,Key:2,EventTime:1553503189000,前一条数据的水位线:1553503188000
&gt; &amp;gt; 4&amp;amp;gt; (2,tom5,1553503189000)
&gt; &amp;gt; currentTimeStamp:
&gt; &amp;gt; 1553503191000,Key:2,EventTime:1553503191000,前一条数据的水位线:1553503189000
&gt; &amp;gt; 4&amp;amp;gt; (2,tom6,1553503191000)
&gt; &amp;gt; currentTimeStamp:
&gt; &amp;gt; 1553503192000,Key:2,EventTime:1553503192000,前一条数据的水位线:1553503191000
&gt; &amp;gt; 4&amp;amp;gt; (2,tom7,1553503192000)
&gt; &amp;gt; currentTimeStamp:
&gt; &amp;gt; 1553503193000,Key:2,EventTime:1553503193000,前一条数据的水位线:1553503192000
&gt; &amp;gt; 4&amp;amp;gt; (2,tom8,1553503193000)
&gt; &amp;gt; currentTimeStamp:
&gt; 1553503185000,Key:1,EventTime:1553503185000,前一条数据的水位线:0
&gt; &amp;gt; 3&amp;amp;gt; (1,jerry1,1553503185000)
&gt; &amp;gt; currentTimeStamp:
&gt; &amp;gt; 1553503186000,Key:1,EventTime:1553503186000,前一条数据的水位线:1553503185000
&gt; &amp;gt; 3&amp;amp;gt; (1,jerry2,1553503186000)
&gt; &amp;gt; currentTimeStamp:
&gt; &amp;gt; 1553503187000,Key:1,EventTime:1553503187000,前一条数据的水位线:1553503186000
&gt; &amp;gt; 3&amp;amp;gt; (1,jerry3,1553503187000)
&gt; &amp;gt; currentTimeStamp:
&gt; &amp;gt; 1553503188000,Key:1,EventTime:1553503188000,前一条数据的水位线:1553503187000
&gt; &amp;gt; 3&amp;amp;gt; (1,jerry4,1553503188000)
&gt; &amp;gt; 2&amp;amp;gt; tom1=jerry1
&gt; &amp;gt; 2&amp;amp;gt; tom1=jerry2
&gt; &amp;gt; 2&amp;amp;gt; tom1=jerry3
&gt; &amp;gt; 2&amp;amp;gt; tom2=jerry1
&gt; &amp;gt; 2&amp;amp;gt; tom2=jerry2
&gt; &amp;gt; 2&amp;amp;gt; tom2=jerry3
&gt; &amp;gt; 2&amp;amp;gt; tom3=jerry1
&gt; &amp;gt; 2&amp;amp;gt; tom3=jerry2
&gt; &amp;gt; 2&amp;amp;gt; tom3=jerry3
&gt; &amp;gt; 2&amp;amp;gt; tom_late=jerry1
&gt; &amp;gt; 2&amp;amp;gt; tom_late=jerry2
&gt; &amp;gt; 2&amp;amp;gt; tom_late=jerry3
&gt; &amp;gt;
&gt; &amp;gt;
&gt; &amp;gt;
&gt; &amp;gt;
&gt; &amp;gt;
&gt; &amp;gt;
&gt; &amp;gt;
&gt; &amp;gt;
&gt; &amp;gt;
&gt; &amp;gt;
&gt; &amp;gt;
&gt; &amp;gt;
&gt; &amp;gt; ------------------&amp;amp;nbsp;原始邮件&amp;amp;nbsp;------------------
&gt; &amp;gt; 发件人:&amp;amp;nbsp;"Djeng Lee"<lee.roval@gmail.com&amp;amp;gt;;
&gt; &amp;gt; 发送时间:&amp;amp;nbsp;2020年4月4日(星期六) 晚上6:35
&gt; &amp;gt; 收件人:&amp;amp;nbsp;"user-zh@flink.apache.org"<user-zh@flink.apache.org
&gt; &amp;amp;gt;;
&gt; &amp;gt;
&gt; &amp;gt; 主题:&amp;amp;nbsp;Re: 回复: 回复: Flink双流Join问题
&gt; &amp;gt;
&gt; &amp;gt;
&gt; &amp;gt;
&gt; &amp;gt; 刚刚我说的不严谨
&gt; &amp;gt;
&gt; &amp;gt; Start = 1000000055000 - (1000000055000 - 0 + 3000) % 3000 =
&gt; 1000000053000
&gt; &amp;gt; End = 1000000053000 + 3000
&gt; &amp;gt;
&gt; &amp;gt; //源码位置,所以窗口开端并不是你传入首条记录的作为开端。窗口划分是从0时间戳切过来的。
&gt; &amp;gt;
&gt; &amp;gt; 文档说明:
&gt; &amp;gt;
&gt; https://ci.apache.org/projects/flink/flink-docs-release-1.10/zh/dev/event_timestamps_watermarks.html
&gt; &amp;gt;
&gt; &amp;gt; 相关代码
&gt; &amp;gt; public static long getWindowStartWithOffset(long timestamp, long
&gt; offset,
&gt; &amp;gt; long windowSize) {
&gt; &amp;gt; &amp;amp;nbsp;&amp;nbsp; return timestamp - (timestamp - offset + windowSize)
&gt; % windowSize;
&gt; &amp;gt; }
&gt; &amp;gt;
&gt; &amp;gt; 在 2020/4/4 下午6:30,“忝忝向仧”<153488125@qq.com&amp;amp;gt; 写入:
&gt; &amp;gt;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 额,你的意思是滚动3秒的窗口开始和结束应该是
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 1000000055000 % 3 得出结果再拿到[start,end).
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 比如1000000055000 % 3
&gt; &amp;gt; 的结果是1000000053000,那么窗口是[1000000053000,1000000056000)
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 是这么理解吧
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;gt; ------------------&amp;amp;amp;nbsp;原始邮件&amp;amp;amp;nbsp;------------------
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 发件人:&amp;amp;amp;nbsp;"lee.roval"<
&gt; lee.roval@gmail.com&amp;amp;amp;gt;;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 发送时间:&amp;amp;amp;nbsp;2020年4月4日(星期六)
&gt; 晚上6:25
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 收件人:&amp;amp;amp;nbsp;"
&gt; user-zh@flink.apache.org"<
&gt; &amp;gt; user-zh@flink.apache.org&amp;amp;amp;gt;;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 主题:&amp;amp;amp;nbsp;Re: 回复: Flink双流Join问题
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 55000的窗口分配,是对windowSize 求模然后拿到start 和
&gt; end。 不是从你首条记录开始算。
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 在 2020/4/4 下午6:23,“忝忝向仧”<
&gt; 153488125@qq.com&amp;amp;amp;gt; 写入:
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 对,我只是回复把前面那串省略了,没写.
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&gt; &amp;gt; [1000000053000,1000000056000),为什么是1000000053000开始?
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 我第一条输入的是
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 1,tom1,1000000055000
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&gt; &amp;gt;
&gt; ------------------&amp;amp;amp;amp;nbsp;原始邮件&amp;amp;amp;amp;nbsp;------------------
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&gt; &amp;gt; 发件人:&amp;amp;amp;amp;nbsp;"libenchao"<libenchao@gmail.com
&gt; &amp;amp;amp;amp;gt;;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&gt; &amp;gt; 发送时间:&amp;amp;amp;amp;nbsp;2020年4月4日(星期六) 晚上6:20
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&gt; &amp;gt; 收件人:&amp;amp;amp;amp;nbsp;"user-zh"<user-zh@flink.apache.org
&gt; &amp;amp;amp;amp;gt;;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 主题:&amp;amp;amp;amp;nbsp;Re:
&gt; &amp;gt; Flink双流Join问题
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&gt; &amp;gt; 你的watermark不是56000,而是1000000056000吧。所以应该是[1000000053000,
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 1000000056000)是一个窗口吧。
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 忝忝向仧 <153488125@qq.com
&gt; &amp;amp;amp;amp;gt;
&gt; &amp;gt; 于2020年4月4日周六 下午6:16写道:
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; 下发新的?
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; 4是一个kafka的source,3是另外一个kafka的source.
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; 如果按照3秒的一个窗口
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; watermark触发窗口的条件是watermark_time&amp;amp;amp;amp;amp;gt;=window_endtime
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; 也就是说[55000,57000)应该是一个窗口的.
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; 我是这么理解的,但是结果56000后就输出了
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; currentTimeStamp:&amp;amp;amp;amp;amp;nbsp;1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; 4&amp;amp;amp;amp;amp;gt; (1,tom1,1000000055000)
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; currentTimeStamp:&amp;amp;amp;amp;amp;nbsp;1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; 4&amp;amp;amp;amp;amp;gt; (1,tom2,1000000056000)
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; currentTimeStamp:&amp;amp;amp;amp;amp;nbsp;1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; 3&amp;amp;amp;amp;amp;gt; (1,jerry1,1000000055000)
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; currentTimeStamp:&amp;amp;amp;amp;amp;nbsp;1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; 3&amp;amp;amp;amp;amp;gt; (1,jerry2,1000000056000)
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; 2&amp;amp;amp;amp;amp;gt; tom1=jerry1
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; ------------------&amp;amp;amp;amp;amp;nbsp;原始邮件&amp;amp;amp;amp;amp;nbsp;------------------
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; 发件人:&amp;amp;amp;amp;amp;nbsp;"lee.roval"<lee.roval@gmail.com
&gt; &amp;amp;amp;amp;amp;gt;;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; 发送时间:&amp;amp;amp;amp;amp;nbsp;2020年4月4日(星期六) 晚上6:10
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; 收件人:&amp;amp;amp;amp;amp;nbsp;"user-zh@flink.apache.org"<
&gt; user-zh@flink.apache.org
&gt; &amp;gt; &amp;amp;amp;amp;amp;gt;;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; 主题:&amp;amp;amp;amp;amp;nbsp;Re: Flink双流Join问题
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; 56000后不是下发新的watermark了嘛
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; 在 2020/4/4
&gt; &amp;gt; 下午5:57,“忝忝向仧”<153488125@qq.com&amp;amp;amp;amp;amp;gt; 写入:
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; 各位好:&amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;nbsp;
&gt; &amp;amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; Flink双流Join遇到一个问题,能否解释下,谢谢.
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;nbsp;
&gt; &amp;amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; ds1和ds2分别读取kafka两个流数据,使用event time和watermark特性,3s的一个翻滚窗口,定义如下:
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;nbsp;
&gt; &amp;amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; 最后,join输出的时候,为什么触发窗口的数据第二条就触发了?
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;nbsp;
&gt; &amp;amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; 按照水印的触发条件应该是watermark_time&amp;amp;amp;amp;amp;amp;gt;=window_endtime.那么,这里应该是1000000057000这条数据来了后才会触发,但是结果却是56000就触发了.为什么?
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; 定义的代码如下:
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; DataStream<String&amp;amp;amp;amp;amp;amp;gt; stream1 = env
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; .addSource(new
&gt; FlinkKafkaConsumer09<String&amp;amp;amp;amp;amp;amp;gt;("stream1",
&gt; &amp;gt; new
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; SimpleStringSchema(), properties).setStartFromLatest())
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; .assignTimestampsAndWatermarks(
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; new
&gt; &amp;gt; AssignerWithPeriodicWatermarks<String&amp;amp;amp;amp;amp;amp;gt;() {
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; long
&gt; &amp;gt; currentTimeStamp = 0L;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; long
&gt; &amp;gt; maxDelayAllowed = 0L;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; long
&gt; &amp;gt; currentWaterMark;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; @Nullable
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; @Override
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; public
&gt; &amp;gt; Watermark getCurrentWatermark() {
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; currentWaterMark = currentTimeStamp-maxDelayAllowed;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; return new
&gt; &amp;gt; Watermark(currentWaterMark);
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; }
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; @Override
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; public long
&gt; &amp;gt; extractTimestamp(String s, long l) {
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; String[]
&gt; &amp;gt; arr= s.split(" ");
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; long
&gt; &amp;gt; timeStamp = Long.parseLong(arr[2]);
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; currentTimeStamp = Math.max(timeStamp, currentTimeStamp);
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; System.out.println("currentTimeStamp: " +&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; currentTimeStamp +",Key:" +
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; arr[0] +
&gt; &amp;gt; ",EventTime:" + timeStamp + ",前一条数据的水位线:" + currentWaterMark);
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; return
&gt; &amp;gt; timeStamp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; }
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; }
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; );
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt;
&gt; DataStream<Tuple3<String,String,String&amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; ds1 =
&gt; &amp;gt; stream1.map(new MapFunction<String,
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; Tuple3<String,String,String&amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;gt;()
&gt; {
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; @Override
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; public Tuple3<String,
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; String,String&amp;amp;amp;amp;amp;amp;gt; map(String s1) throws Exception
&gt; {
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; String[]
&gt; &amp;gt; arr = s1.split(" ");
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; return
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; Tuple3.of(arr[0],arr[1],arr[2]);
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; }
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; });
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; ds1.print();
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; DataStream<String&amp;amp;amp;amp;amp;amp;gt; stream2 = env
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; .addSource(new
&gt; FlinkKafkaConsumer09<String&amp;amp;amp;amp;amp;amp;gt;("stream2",
&gt; &amp;gt; new
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; SimpleStringSchema(), properties).setStartFromLatest())
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; .assignTimestampsAndWatermarks(
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; new
&gt; &amp;gt; AssignerWithPeriodicWatermarks<String&amp;amp;amp;amp;amp;amp;gt;() {
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; long
&gt; &amp;gt; currentTimeStamp = 0L;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; long
&gt; &amp;gt; maxDelayAllowed = 0L;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; long
&gt; &amp;gt; currentWaterMark;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; @Nullable
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; @Override
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; public
&gt; &amp;gt; Watermark getCurrentWatermark() {
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; currentWaterMark = currentTimeStamp-maxDelayAllowed;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; return new
&gt; &amp;gt; Watermark(currentWaterMark);
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; }
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; @Override
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; public long
&gt; &amp;gt; extractTimestamp(String s, long l) {
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; String[]
&gt; &amp;gt; arr= s.split(" ");
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; long
&gt; &amp;gt; timeStamp = Long.parseLong(arr[2]);
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; currentTimeStamp = Math.max(timeStamp, currentTimeStamp);
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; System.out.println("currentTimeStamp: " +&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; currentTimeStamp +",Key:" +
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; arr[0] +
&gt; &amp;gt; ",EventTime:" + timeStamp + ",前一条数据的水位线:" + currentWaterMark);
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; return
&gt; &amp;gt; timeStamp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; }
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; }
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; );
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt;
&gt; DataStream<Tuple3<String,String,String&amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; ds2
&gt; &amp;gt; =stream2.map(new MapFunction<String,
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; Tuple3<String,String,String&amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;gt;()
&gt; {
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; @Override
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; public
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; Tuple3<String,String,String&amp;amp;amp;amp;amp;amp;gt; map(String s2)
&gt; throws
&gt; &amp;gt; Exception {
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; String
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; [] arr =
&gt; &amp;gt; s2.split(" ");
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; return
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; Tuple3.of(arr[0],arr[1],arr[2]);
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; }
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; });
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; ds2.print();
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; ds1.join(ds2).where(new KeySelector<Tuple3<String,
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; String,String&amp;amp;amp;amp;amp;amp;gt;,String&amp;amp;amp;amp;amp;amp;gt;() {
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; @Override
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; public String
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; getKey(Tuple3<String, String,String&amp;amp;amp;amp;amp;amp;gt; value)
&gt; throws
&gt; &amp;gt; Exception {
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; return
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; value.f0;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; }
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; }).equalTo(new
&gt; &amp;gt; KeySelector<Tuple3<String, String
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; ,String&amp;amp;amp;amp;amp;amp;gt;, String&amp;amp;amp;amp;amp;amp;gt;() {
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; @Override
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; public String
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; getKey(Tuple3<String, String,String&amp;amp;amp;amp;amp;amp;gt; value)
&gt; throws
&gt; &amp;gt; Exception {
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; return
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; value.f0;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; }
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp; })
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; .window(TumblingEventTimeWindows.of(Time.seconds(3)))
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; .apply(new
&gt; &amp;gt; JoinFunction<Tuple3<String,
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; String,String&amp;amp;amp;amp;amp;amp;gt;, Tuple3<String,
&gt; &amp;gt; String,String&amp;amp;amp;amp;amp;amp;gt;,
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; String&amp;amp;amp;amp;amp;amp;gt;() {
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; @Override
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; public String
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; join(Tuple3<String, String,String&amp;amp;amp;amp;amp;amp;gt; value1,
&gt; Tuple3<String,
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; String,String&amp;amp;amp;amp;amp;amp;gt; value2) throws Exception {
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; return
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt; value1.f1 +
&gt; &amp;gt; "=" + value2.f1;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; }
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; }).print();
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; 结果如下:
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; currentTimeStamp:
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; 1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; 4&amp;amp;amp;amp;amp;amp;gt; (1,tom1,1000000055000)
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; currentTimeStamp:
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; 1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; 4&amp;amp;amp;amp;amp;amp;gt; (1,tom2,1000000056000)
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; currentTimeStamp:
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; 1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; 3&amp;amp;amp;amp;amp;amp;gt; (1,jerry1,1000000055000)
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; currentTimeStamp:
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; 1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; 3&amp;amp;amp;amp;amp;amp;gt; (1,jerry2,1000000056000)
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;gt;
&gt; &amp;gt; &amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;
&gt; &amp;gt; 2&amp;amp;amp;amp;amp;amp;gt; tom1=jerry1
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; --
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; Benchao Li
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; School of Electronics
&gt; &amp;gt; Engineering and Computer Science, Peking University
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; Tel:+86-15650713730
&gt; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; Email:
&gt; &amp;gt; libenchao@gmail.com; libenchao@pku.edu.cn
&gt;
&gt;
&gt;
&gt; --
&gt;
&gt; Benchao Li
&gt; School of Electronics Engineering and Computer Science, Peking University
&gt; Tel:+86-15650713730
&gt; Email: libenchao@gmail.com; libenchao@pku.edu.cn



-- 

Benchao Li
School of Electronics Engineering and Computer Science, Peking University
Tel:+86-15650713730
Email: libenchao@gmail.com; libenchao@pku.edu.cn

Re: 回复: 回复: Flink双流Join问题

Posted by Benchao Li <li...@gmail.com>.
嗯,可以这么理解。

忝忝向仧 <15...@qq.com> 于2020年4月4日周六 下午11:20写道:

> 额,明白了,意思是说两个流情况下
> 比如,stream1里面晚来的那条
> 1 tom_late 1553503185000的水印是1553503188000
> 但是stream2里面,这条1,jerry1,1553503185000的水印是1553503185000
> 所以取最小的,因此还是会被打印?
> 是这么理解么?
>
>
>
>
>
>
> ------------------&nbsp;原始邮件&nbsp;------------------
> 发件人:&nbsp;"libenchao"<libenchao@gmail.com&gt;;
> 发送时间:&nbsp;2020年4月4日(星期六) 晚上11:04
> 收件人:&nbsp;"user-zh"<user-zh@flink.apache.org&gt;;
>
> 主题:&nbsp;Re: 回复: 回复: Flink双流Join问题
>
>
>
> 两个stream输入的场景,operator的watermark是取两者的最小值。
> 所以虽然这条数据在第一个流里面看起来已经是肯定迟到了,但是有可能看第二个流的watermark它还没有过期。
>
>
> 忝忝向仧 <153488125@qq.com&gt; 于2020年4月4日周六 下午10:42写道:
>
> &gt; Hi:
> &gt; &amp;nbsp; &amp;nbsp; 还有个疑问,我特意构造了个乱序的消息,还是3秒一个窗口
> &gt; stream1:
> &gt; 1 tom1 1553503185000
> &gt; 1 tom2 1553503186000
> &gt; 1 tom3 1553503187000
> &gt; 1 tom4 1553503188000
> &gt; 1 tom_late 1553503185000
> &gt;
> &gt;
> &gt;
> &gt; stream2:
> &gt; 1 jerry1 1553503185000
> &gt; 1 jerry2 1553503186000
> &gt; 1 jerry3 1553503187000
> &gt; 1 jerry4 1553503188000
> &gt;
> &gt;
> &gt; 我代码还是之前的代码,定义水印都是maxDelayAllowed = 0L;也就是没有设置最大延时时间.
> &gt; 那么,tom_late这条乱序,在第一个窗口[1553503185000,1553503188000)内不应该被输出吧?
> &gt; 但是结果还是输出了,这个是为什么?
> &gt;
> &gt;
> &gt; currentTimeStamp:
> 1553503185000,Key:1,EventTime:1553503185000,前一条数据的水位线:0
> &gt; 4&amp;gt; (1,tom1,1553503185000)
> &gt; currentTimeStamp:
> &gt; 1553503186000,Key:1,EventTime:1553503186000,前一条数据的水位线:1553503185000
> &gt; 4&amp;gt; (1,tom2,1553503186000)
> &gt; currentTimeStamp:
> &gt; 1553503187000,Key:1,EventTime:1553503187000,前一条数据的水位线:1553503186000
> &gt; 4&amp;gt; (1,tom3,1553503187000)
> &gt; currentTimeStamp:
> &gt; 1553503188000,Key:1,EventTime:1553503188000,前一条数据的水位线:1553503187000
> &gt; 4&amp;gt; (1,tom4,1553503188000)
> &gt; currentTimeStamp:
> &gt; 1553503188000,Key:1,EventTime:1553503185000,前一条数据的水位线:1553503188000
> &gt; 4&amp;gt; (1,tom_late,1553503185000)
> &gt; currentTimeStamp:
> &gt; 1553503189000,Key:2,EventTime:1553503189000,前一条数据的水位线:1553503188000
> &gt; 4&amp;gt; (2,tom5,1553503189000)
> &gt; currentTimeStamp:
> &gt; 1553503191000,Key:2,EventTime:1553503191000,前一条数据的水位线:1553503189000
> &gt; 4&amp;gt; (2,tom6,1553503191000)
> &gt; currentTimeStamp:
> &gt; 1553503192000,Key:2,EventTime:1553503192000,前一条数据的水位线:1553503191000
> &gt; 4&amp;gt; (2,tom7,1553503192000)
> &gt; currentTimeStamp:
> &gt; 1553503193000,Key:2,EventTime:1553503193000,前一条数据的水位线:1553503192000
> &gt; 4&amp;gt; (2,tom8,1553503193000)
> &gt; currentTimeStamp:
> 1553503185000,Key:1,EventTime:1553503185000,前一条数据的水位线:0
> &gt; 3&amp;gt; (1,jerry1,1553503185000)
> &gt; currentTimeStamp:
> &gt; 1553503186000,Key:1,EventTime:1553503186000,前一条数据的水位线:1553503185000
> &gt; 3&amp;gt; (1,jerry2,1553503186000)
> &gt; currentTimeStamp:
> &gt; 1553503187000,Key:1,EventTime:1553503187000,前一条数据的水位线:1553503186000
> &gt; 3&amp;gt; (1,jerry3,1553503187000)
> &gt; currentTimeStamp:
> &gt; 1553503188000,Key:1,EventTime:1553503188000,前一条数据的水位线:1553503187000
> &gt; 3&amp;gt; (1,jerry4,1553503188000)
> &gt; 2&amp;gt; tom1=jerry1
> &gt; 2&amp;gt; tom1=jerry2
> &gt; 2&amp;gt; tom1=jerry3
> &gt; 2&amp;gt; tom2=jerry1
> &gt; 2&amp;gt; tom2=jerry2
> &gt; 2&amp;gt; tom2=jerry3
> &gt; 2&amp;gt; tom3=jerry1
> &gt; 2&amp;gt; tom3=jerry2
> &gt; 2&amp;gt; tom3=jerry3
> &gt; 2&amp;gt; tom_late=jerry1
> &gt; 2&amp;gt; tom_late=jerry2
> &gt; 2&amp;gt; tom_late=jerry3
> &gt;
> &gt;
> &gt;
> &gt;
> &gt;
> &gt;
> &gt;
> &gt;
> &gt;
> &gt;
> &gt;
> &gt;
> &gt; ------------------&amp;nbsp;原始邮件&amp;nbsp;------------------
> &gt; 发件人:&amp;nbsp;"Djeng Lee"<lee.roval@gmail.com&amp;gt;;
> &gt; 发送时间:&amp;nbsp;2020年4月4日(星期六) 晚上6:35
> &gt; 收件人:&amp;nbsp;"user-zh@flink.apache.org"<user-zh@flink.apache.org
> &amp;gt;;
> &gt;
> &gt; 主题:&amp;nbsp;Re: 回复: 回复: Flink双流Join问题
> &gt;
> &gt;
> &gt;
> &gt; 刚刚我说的不严谨
> &gt;
> &gt; Start = 1000000055000 - (1000000055000 - 0 + 3000) % 3000 =
> 1000000053000
> &gt; End = 1000000053000 + 3000
> &gt;
> &gt; //源码位置,所以窗口开端并不是你传入首条记录的作为开端。窗口划分是从0时间戳切过来的。
> &gt;
> &gt; 文档说明:
> &gt;
> https://ci.apache.org/projects/flink/flink-docs-release-1.10/zh/dev/event_timestamps_watermarks.html
> &gt;
> &gt; 相关代码
> &gt; public static long getWindowStartWithOffset(long timestamp, long
> offset,
> &gt; long windowSize) {
> &gt; &amp;nbsp;&nbsp; return timestamp - (timestamp - offset + windowSize)
> % windowSize;
> &gt; }
> &gt;
> &gt; 在 2020/4/4 下午6:30,“忝忝向仧”<153488125@qq.com&amp;gt; 写入:
> &gt;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 额,你的意思是滚动3秒的窗口开始和结束应该是
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1000000055000 % 3 得出结果再拿到[start,end).
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 比如1000000055000 % 3
> &gt; 的结果是1000000053000,那么窗口是[1000000053000,1000000056000)
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 是这么理解吧
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &gt; ------------------&amp;amp;nbsp;原始邮件&amp;amp;nbsp;------------------
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 发件人:&amp;amp;nbsp;"lee.roval"<
> lee.roval@gmail.com&amp;amp;gt;;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 发送时间:&amp;amp;nbsp;2020年4月4日(星期六)
> 晚上6:25
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 收件人:&amp;amp;nbsp;"
> user-zh@flink.apache.org"<
> &gt; user-zh@flink.apache.org&amp;amp;gt;;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 主题:&amp;amp;nbsp;Re: 回复: Flink双流Join问题
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 55000的窗口分配,是对windowSize 求模然后拿到start 和
> end。 不是从你首条记录开始算。
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 在 2020/4/4 下午6:23,“忝忝向仧”<
> 153488125@qq.com&amp;amp;gt; 写入:
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 对,我只是回复把前面那串省略了,没写.
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
> &gt; [1000000053000,1000000056000),为什么是1000000053000开始?
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 我第一条输入的是
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 1,tom1,1000000055000
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
> &gt;
> ------------------&amp;amp;amp;nbsp;原始邮件&amp;amp;amp;nbsp;------------------
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
> &gt; 发件人:&amp;amp;amp;nbsp;"libenchao"<libenchao@gmail.com
> &amp;amp;amp;gt;;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
> &gt; 发送时间:&amp;amp;amp;nbsp;2020年4月4日(星期六) 晚上6:20
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
> &gt; 收件人:&amp;amp;amp;nbsp;"user-zh"<user-zh@flink.apache.org
> &amp;amp;amp;gt;;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 主题:&amp;amp;amp;nbsp;Re:
> &gt; Flink双流Join问题
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
> &gt; 你的watermark不是56000,而是1000000056000吧。所以应该是[1000000053000,
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 1000000056000)是一个窗口吧。
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 忝忝向仧 <153488125@qq.com
> &amp;amp;amp;gt;
> &gt; 于2020年4月4日周六 下午6:16写道:
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; 下发新的?
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; 4是一个kafka的source,3是另外一个kafka的source.
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; 如果按照3秒的一个窗口
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; watermark触发窗口的条件是watermark_time&amp;amp;amp;amp;gt;=window_endtime
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; 也就是说[55000,57000)应该是一个窗口的.
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; 我是这么理解的,但是结果56000后就输出了
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> currentTimeStamp:&amp;amp;amp;amp;nbsp;1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; 4&amp;amp;amp;amp;gt; (1,tom1,1000000055000)
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> currentTimeStamp:&amp;amp;amp;amp;nbsp;1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; 4&amp;amp;amp;amp;gt; (1,tom2,1000000056000)
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> currentTimeStamp:&amp;amp;amp;amp;nbsp;1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; 3&amp;amp;amp;amp;gt; (1,jerry1,1000000055000)
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> currentTimeStamp:&amp;amp;amp;amp;nbsp;1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; 3&amp;amp;amp;amp;gt; (1,jerry2,1000000056000)
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; 2&amp;amp;amp;amp;gt; tom1=jerry1
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> ------------------&amp;amp;amp;amp;nbsp;原始邮件&amp;amp;amp;amp;nbsp;------------------
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; 发件人:&amp;amp;amp;amp;nbsp;"lee.roval"<lee.roval@gmail.com
> &amp;amp;amp;amp;gt;;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; 发送时间:&amp;amp;amp;amp;nbsp;2020年4月4日(星期六) 晚上6:10
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; 收件人:&amp;amp;amp;amp;nbsp;"user-zh@flink.apache.org"<
> user-zh@flink.apache.org
> &gt; &amp;amp;amp;amp;gt;;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; 主题:&amp;amp;amp;amp;nbsp;Re: Flink双流Join问题
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; 56000后不是下发新的watermark了嘛
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; 在 2020/4/4
> &gt; 下午5:57,“忝忝向仧”<153488125@qq.com&amp;amp;amp;amp;gt; 写入:
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; 各位好:&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;nbsp;
> &amp;amp;amp;amp;amp;nbsp;
> &gt; &amp;amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; Flink双流Join遇到一个问题,能否解释下,谢谢.
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;nbsp;
> &amp;amp;amp;amp;amp;nbsp;
> &gt; &amp;amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; ds1和ds2分别读取kafka两个流数据,使用event time和watermark特性,3s的一个翻滚窗口,定义如下:
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;nbsp;
> &amp;amp;amp;amp;amp;nbsp;
> &gt; &amp;amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; 最后,join输出的时候,为什么触发窗口的数据第二条就触发了?
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;nbsp;
> &amp;amp;amp;amp;amp;nbsp;
> &gt; &amp;amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> 按照水印的触发条件应该是watermark_time&amp;amp;amp;amp;amp;gt;=window_endtime.那么,这里应该是1000000057000这条数据来了后才会触发,但是结果却是56000就触发了.为什么?
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> 定义的代码如下:
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; DataStream<String&amp;amp;amp;amp;amp;gt; stream1 = env
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; .addSource(new
> FlinkKafkaConsumer09<String&amp;amp;amp;amp;amp;gt;("stream1",
> &gt; new
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; SimpleStringSchema(), properties).setStartFromLatest())
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; .assignTimestampsAndWatermarks(
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; new
> &gt; AssignerWithPeriodicWatermarks<String&amp;amp;amp;amp;amp;gt;() {
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; long
> &gt; currentTimeStamp = 0L;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; long
> &gt; maxDelayAllowed = 0L;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; long
> &gt; currentWaterMark;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; @Nullable
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; @Override
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; public
> &gt; Watermark getCurrentWatermark() {
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; currentWaterMark = currentTimeStamp-maxDelayAllowed;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; return new
> &gt; Watermark(currentWaterMark);
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; }
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; @Override
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; public long
> &gt; extractTimestamp(String s, long l) {
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; String[]
> &gt; arr= s.split(" ");
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; long
> &gt; timeStamp = Long.parseLong(arr[2]);
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; currentTimeStamp = Math.max(timeStamp, currentTimeStamp);
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; System.out.println("currentTimeStamp: " +&amp;amp;amp;amp;nbsp;
> &gt; currentTimeStamp +",Key:" +
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; arr[0] +
> &gt; ",EventTime:" + timeStamp + ",前一条数据的水位线:" + currentWaterMark);
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; return
> &gt; timeStamp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; }
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; }
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; );
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt;
> DataStream<Tuple3<String,String,String&amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;gt;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; ds1 =
> &gt; stream1.map(new MapFunction<String,
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> Tuple3<String,String,String&amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;gt;()
> {
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; @Override
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; public Tuple3<String,
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; String,String&amp;amp;amp;amp;amp;gt; map(String s1) throws Exception
> {
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; String[]
> &gt; arr = s1.split(" ");
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; return
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; Tuple3.of(arr[0],arr[1],arr[2]);
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; }
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; });
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> ds1.print();
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; DataStream<String&amp;amp;amp;amp;amp;gt; stream2 = env
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; .addSource(new
> FlinkKafkaConsumer09<String&amp;amp;amp;amp;amp;gt;("stream2",
> &gt; new
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; SimpleStringSchema(), properties).setStartFromLatest())
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; .assignTimestampsAndWatermarks(
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; new
> &gt; AssignerWithPeriodicWatermarks<String&amp;amp;amp;amp;amp;gt;() {
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; long
> &gt; currentTimeStamp = 0L;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; long
> &gt; maxDelayAllowed = 0L;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; long
> &gt; currentWaterMark;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; @Nullable
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; @Override
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; public
> &gt; Watermark getCurrentWatermark() {
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; currentWaterMark = currentTimeStamp-maxDelayAllowed;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; return new
> &gt; Watermark(currentWaterMark);
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; }
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; @Override
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; public long
> &gt; extractTimestamp(String s, long l) {
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; String[]
> &gt; arr= s.split(" ");
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; long
> &gt; timeStamp = Long.parseLong(arr[2]);
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; currentTimeStamp = Math.max(timeStamp, currentTimeStamp);
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; System.out.println("currentTimeStamp: " +&amp;amp;amp;amp;nbsp;
> &gt; currentTimeStamp +",Key:" +
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; arr[0] +
> &gt; ",EventTime:" + timeStamp + ",前一条数据的水位线:" + currentWaterMark);
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; return
> &gt; timeStamp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; }
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; }
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; );
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt;
> DataStream<Tuple3<String,String,String&amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;gt;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; ds2
> &gt; =stream2.map(new MapFunction<String,
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> Tuple3<String,String,String&amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;gt;()
> {
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; @Override
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; public
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; Tuple3<String,String,String&amp;amp;amp;amp;amp;gt; map(String s2)
> throws
> &gt; Exception {
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; String
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; [] arr =
> &gt; s2.split(" ");
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; return
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; Tuple3.of(arr[0],arr[1],arr[2]);
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; }
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; });
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> ds2.print();
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; ds1.join(ds2).where(new KeySelector<Tuple3<String,
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> String,String&amp;amp;amp;amp;amp;gt;,String&amp;amp;amp;amp;amp;gt;() {
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; @Override
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; public String
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; getKey(Tuple3<String, String,String&amp;amp;amp;amp;amp;gt; value)
> throws
> &gt; Exception {
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; return
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; value.f0;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; }
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> }).equalTo(new
> &gt; KeySelector<Tuple3<String, String
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; ,String&amp;amp;amp;amp;amp;gt;, String&amp;amp;amp;amp;amp;gt;() {
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; @Override
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; public String
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; getKey(Tuple3<String, String,String&amp;amp;amp;amp;amp;gt; value)
> throws
> &gt; Exception {
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; return
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; value.f0;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; }
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; })
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; .window(TumblingEventTimeWindows.of(Time.seconds(3)))
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> .apply(new
> &gt; JoinFunction<Tuple3<String,
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; String,String&amp;amp;amp;amp;amp;gt;, Tuple3<String,
> &gt; String,String&amp;amp;amp;amp;amp;gt;,
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; String&amp;amp;amp;amp;amp;gt;() {
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; @Override
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; public String
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; join(Tuple3<String, String,String&amp;amp;amp;amp;amp;gt; value1,
> Tuple3<String,
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; String,String&amp;amp;amp;amp;amp;gt; value2) throws Exception {
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; return
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; value1.f1 +
> &gt; "=" + value2.f1;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt;
> &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; }
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> }).print();
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> 结果如下:
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> currentTimeStamp:
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; 1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; 4&amp;amp;amp;amp;amp;gt; (1,tom1,1000000055000)
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> currentTimeStamp:
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; 1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; 4&amp;amp;amp;amp;amp;gt; (1,tom2,1000000056000)
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> currentTimeStamp:
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; 1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; 3&amp;amp;amp;amp;amp;gt; (1,jerry1,1000000055000)
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> currentTimeStamp:
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; 1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; 3&amp;amp;amp;amp;amp;gt; (1,jerry2,1000000056000)
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
> &gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
> &gt; 2&amp;amp;amp;amp;amp;gt; tom1=jerry1
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; --
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Benchao Li
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; School of Electronics
> &gt; Engineering and Computer Science, Peking University
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Tel:+86-15650713730
> &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Email:
> &gt; libenchao@gmail.com; libenchao@pku.edu.cn
>
>
>
> --
>
> Benchao Li
> School of Electronics Engineering and Computer Science, Peking University
> Tel:+86-15650713730
> Email: libenchao@gmail.com; libenchao@pku.edu.cn



-- 

Benchao Li
School of Electronics Engineering and Computer Science, Peking University
Tel:+86-15650713730
Email: libenchao@gmail.com; libenchao@pku.edu.cn

回复: 回复: 回复: Flink双流Join问题

Posted by 忝忝向仧 <15...@qq.com>.
额,明白了,意思是说两个流情况下
比如,stream1里面晚来的那条
1 tom_late 1553503185000的水印是1553503188000
但是stream2里面,这条1,jerry1,1553503185000的水印是1553503185000
所以取最小的,因此还是会被打印?
是这么理解么?






------------------&nbsp;原始邮件&nbsp;------------------
发件人:&nbsp;"libenchao"<libenchao@gmail.com&gt;;
发送时间:&nbsp;2020年4月4日(星期六) 晚上11:04
收件人:&nbsp;"user-zh"<user-zh@flink.apache.org&gt;;

主题:&nbsp;Re: 回复: 回复: Flink双流Join问题



两个stream输入的场景,operator的watermark是取两者的最小值。
所以虽然这条数据在第一个流里面看起来已经是肯定迟到了,但是有可能看第二个流的watermark它还没有过期。


忝忝向仧 <153488125@qq.com&gt; 于2020年4月4日周六 下午10:42写道:

&gt; Hi:
&gt; &amp;nbsp; &amp;nbsp; 还有个疑问,我特意构造了个乱序的消息,还是3秒一个窗口
&gt; stream1:
&gt; 1 tom1 1553503185000
&gt; 1 tom2 1553503186000
&gt; 1 tom3 1553503187000
&gt; 1 tom4 1553503188000
&gt; 1 tom_late 1553503185000
&gt;
&gt;
&gt;
&gt; stream2:
&gt; 1 jerry1 1553503185000
&gt; 1 jerry2 1553503186000
&gt; 1 jerry3 1553503187000
&gt; 1 jerry4 1553503188000
&gt;
&gt;
&gt; 我代码还是之前的代码,定义水印都是maxDelayAllowed = 0L;也就是没有设置最大延时时间.
&gt; 那么,tom_late这条乱序,在第一个窗口[1553503185000,1553503188000)内不应该被输出吧?
&gt; 但是结果还是输出了,这个是为什么?
&gt;
&gt;
&gt; currentTimeStamp: 1553503185000,Key:1,EventTime:1553503185000,前一条数据的水位线:0
&gt; 4&amp;gt; (1,tom1,1553503185000)
&gt; currentTimeStamp:
&gt; 1553503186000,Key:1,EventTime:1553503186000,前一条数据的水位线:1553503185000
&gt; 4&amp;gt; (1,tom2,1553503186000)
&gt; currentTimeStamp:
&gt; 1553503187000,Key:1,EventTime:1553503187000,前一条数据的水位线:1553503186000
&gt; 4&amp;gt; (1,tom3,1553503187000)
&gt; currentTimeStamp:
&gt; 1553503188000,Key:1,EventTime:1553503188000,前一条数据的水位线:1553503187000
&gt; 4&amp;gt; (1,tom4,1553503188000)
&gt; currentTimeStamp:
&gt; 1553503188000,Key:1,EventTime:1553503185000,前一条数据的水位线:1553503188000
&gt; 4&amp;gt; (1,tom_late,1553503185000)
&gt; currentTimeStamp:
&gt; 1553503189000,Key:2,EventTime:1553503189000,前一条数据的水位线:1553503188000
&gt; 4&amp;gt; (2,tom5,1553503189000)
&gt; currentTimeStamp:
&gt; 1553503191000,Key:2,EventTime:1553503191000,前一条数据的水位线:1553503189000
&gt; 4&amp;gt; (2,tom6,1553503191000)
&gt; currentTimeStamp:
&gt; 1553503192000,Key:2,EventTime:1553503192000,前一条数据的水位线:1553503191000
&gt; 4&amp;gt; (2,tom7,1553503192000)
&gt; currentTimeStamp:
&gt; 1553503193000,Key:2,EventTime:1553503193000,前一条数据的水位线:1553503192000
&gt; 4&amp;gt; (2,tom8,1553503193000)
&gt; currentTimeStamp: 1553503185000,Key:1,EventTime:1553503185000,前一条数据的水位线:0
&gt; 3&amp;gt; (1,jerry1,1553503185000)
&gt; currentTimeStamp:
&gt; 1553503186000,Key:1,EventTime:1553503186000,前一条数据的水位线:1553503185000
&gt; 3&amp;gt; (1,jerry2,1553503186000)
&gt; currentTimeStamp:
&gt; 1553503187000,Key:1,EventTime:1553503187000,前一条数据的水位线:1553503186000
&gt; 3&amp;gt; (1,jerry3,1553503187000)
&gt; currentTimeStamp:
&gt; 1553503188000,Key:1,EventTime:1553503188000,前一条数据的水位线:1553503187000
&gt; 3&amp;gt; (1,jerry4,1553503188000)
&gt; 2&amp;gt; tom1=jerry1
&gt; 2&amp;gt; tom1=jerry2
&gt; 2&amp;gt; tom1=jerry3
&gt; 2&amp;gt; tom2=jerry1
&gt; 2&amp;gt; tom2=jerry2
&gt; 2&amp;gt; tom2=jerry3
&gt; 2&amp;gt; tom3=jerry1
&gt; 2&amp;gt; tom3=jerry2
&gt; 2&amp;gt; tom3=jerry3
&gt; 2&amp;gt; tom_late=jerry1
&gt; 2&amp;gt; tom_late=jerry2
&gt; 2&amp;gt; tom_late=jerry3
&gt;
&gt;
&gt;
&gt;
&gt;
&gt;
&gt;
&gt;
&gt;
&gt;
&gt;
&gt;
&gt; ------------------&amp;nbsp;原始邮件&amp;nbsp;------------------
&gt; 发件人:&amp;nbsp;"Djeng Lee"<lee.roval@gmail.com&amp;gt;;
&gt; 发送时间:&amp;nbsp;2020年4月4日(星期六) 晚上6:35
&gt; 收件人:&amp;nbsp;"user-zh@flink.apache.org"<user-zh@flink.apache.org&amp;gt;;
&gt;
&gt; 主题:&amp;nbsp;Re: 回复: 回复: Flink双流Join问题
&gt;
&gt;
&gt;
&gt; 刚刚我说的不严谨
&gt;
&gt; Start = 1000000055000 - (1000000055000 - 0 + 3000) % 3000 = 1000000053000
&gt; End = 1000000053000 + 3000
&gt;
&gt; //源码位置,所以窗口开端并不是你传入首条记录的作为开端。窗口划分是从0时间戳切过来的。
&gt;
&gt; 文档说明:
&gt; https://ci.apache.org/projects/flink/flink-docs-release-1.10/zh/dev/event_timestamps_watermarks.html
&gt;
&gt; 相关代码
&gt; public static long getWindowStartWithOffset(long timestamp, long offset,
&gt; long windowSize) {
&gt; &amp;nbsp;&nbsp; return timestamp - (timestamp - offset + windowSize) % windowSize;
&gt; }
&gt;
&gt; 在 2020/4/4 下午6:30,“忝忝向仧”<153488125@qq.com&amp;gt; 写入:
&gt;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 额,你的意思是滚动3秒的窗口开始和结束应该是
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1000000055000 % 3 得出结果再拿到[start,end).
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 比如1000000055000 % 3
&gt; 的结果是1000000053000,那么窗口是[1000000053000,1000000056000)
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 是这么理解吧
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; ------------------&amp;amp;nbsp;原始邮件&amp;amp;nbsp;------------------
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 发件人:&amp;amp;nbsp;"lee.roval"<lee.roval@gmail.com&amp;amp;gt;;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 发送时间:&amp;amp;nbsp;2020年4月4日(星期六) 晚上6:25
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 收件人:&amp;amp;nbsp;"user-zh@flink.apache.org"<
&gt; user-zh@flink.apache.org&amp;amp;gt;;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 主题:&amp;amp;nbsp;Re: 回复: Flink双流Join问题
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 55000的窗口分配,是对windowSize 求模然后拿到start 和 end。 不是从你首条记录开始算。
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 在 2020/4/4 下午6:23,“忝忝向仧”<153488125@qq.com&amp;amp;gt; 写入:
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 对,我只是回复把前面那串省略了,没写.
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; [1000000053000,1000000056000),为什么是1000000053000开始?
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 我第一条输入的是
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 1,tom1,1000000055000
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; ------------------&amp;amp;amp;nbsp;原始邮件&amp;amp;amp;nbsp;------------------
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; 发件人:&amp;amp;amp;nbsp;"libenchao"<libenchao@gmail.com&amp;amp;amp;gt;;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; 发送时间:&amp;amp;amp;nbsp;2020年4月4日(星期六) 晚上6:20
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; 收件人:&amp;amp;amp;nbsp;"user-zh"<user-zh@flink.apache.org&amp;amp;amp;gt;;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 主题:&amp;amp;amp;nbsp;Re:
&gt; Flink双流Join问题
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; 你的watermark不是56000,而是1000000056000吧。所以应该是[1000000053000,
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 1000000056000)是一个窗口吧。
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 忝忝向仧 <153488125@qq.com&amp;amp;amp;gt;
&gt; 于2020年4月4日周六 下午6:16写道:
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; 下发新的?
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; 4是一个kafka的source,3是另外一个kafka的source.
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; 如果按照3秒的一个窗口
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; watermark触发窗口的条件是watermark_time&amp;amp;amp;amp;gt;=window_endtime
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; 也就是说[55000,57000)应该是一个窗口的.
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; 我是这么理解的,但是结果56000后就输出了
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; currentTimeStamp:&amp;amp;amp;amp;nbsp;1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; 4&amp;amp;amp;amp;gt; (1,tom1,1000000055000)
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; currentTimeStamp:&amp;amp;amp;amp;nbsp;1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; 4&amp;amp;amp;amp;gt; (1,tom2,1000000056000)
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; currentTimeStamp:&amp;amp;amp;amp;nbsp;1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; 3&amp;amp;amp;amp;gt; (1,jerry1,1000000055000)
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; currentTimeStamp:&amp;amp;amp;amp;nbsp;1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; 3&amp;amp;amp;amp;gt; (1,jerry2,1000000056000)
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; 2&amp;amp;amp;amp;gt; tom1=jerry1
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; ------------------&amp;amp;amp;amp;nbsp;原始邮件&amp;amp;amp;amp;nbsp;------------------
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; 发件人:&amp;amp;amp;amp;nbsp;"lee.roval"<lee.roval@gmail.com&amp;amp;amp;amp;gt;;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; 发送时间:&amp;amp;amp;amp;nbsp;2020年4月4日(星期六) 晚上6:10
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; 收件人:&amp;amp;amp;amp;nbsp;"user-zh@flink.apache.org"<user-zh@flink.apache.org
&gt; &amp;amp;amp;amp;gt;;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; 主题:&amp;amp;amp;amp;nbsp;Re: Flink双流Join问题
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; 56000后不是下发新的watermark了嘛
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; 在 2020/4/4
&gt; 下午5:57,“忝忝向仧”<153488125@qq.com&amp;amp;amp;amp;gt; 写入:
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; 各位好:&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;nbsp;
&gt; &amp;amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; Flink双流Join遇到一个问题,能否解释下,谢谢.
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;nbsp;
&gt; &amp;amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; ds1和ds2分别读取kafka两个流数据,使用event time和watermark特性,3s的一个翻滚窗口,定义如下:
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;nbsp;
&gt; &amp;amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; 最后,join输出的时候,为什么触发窗口的数据第二条就触发了?
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;nbsp;
&gt; &amp;amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; 按照水印的触发条件应该是watermark_time&amp;amp;amp;amp;amp;gt;=window_endtime.那么,这里应该是1000000057000这条数据来了后才会触发,但是结果却是56000就触发了.为什么?
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; 定义的代码如下:
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; DataStream<String&amp;amp;amp;amp;amp;gt; stream1 = env
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; .addSource(new FlinkKafkaConsumer09<String&amp;amp;amp;amp;amp;gt;("stream1",
&gt; new
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; SimpleStringSchema(), properties).setStartFromLatest())
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; .assignTimestampsAndWatermarks(
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; new
&gt; AssignerWithPeriodicWatermarks<String&amp;amp;amp;amp;amp;gt;() {
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; long
&gt; currentTimeStamp = 0L;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; long
&gt; maxDelayAllowed = 0L;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; long
&gt; currentWaterMark;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; @Nullable
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; @Override
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; public
&gt; Watermark getCurrentWatermark() {
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; currentWaterMark = currentTimeStamp-maxDelayAllowed;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; return new
&gt; Watermark(currentWaterMark);
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; }
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; @Override
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; public long
&gt; extractTimestamp(String s, long l) {
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; String[]
&gt; arr= s.split(" ");
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; long
&gt; timeStamp = Long.parseLong(arr[2]);
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; currentTimeStamp = Math.max(timeStamp, currentTimeStamp);
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; System.out.println("currentTimeStamp: " +&amp;amp;amp;amp;nbsp;
&gt; currentTimeStamp +",Key:" +
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; arr[0] +
&gt; ",EventTime:" + timeStamp + ",前一条数据的水位线:" + currentWaterMark);
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; return
&gt; timeStamp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; }
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; }
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; );
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; DataStream<Tuple3<String,String,String&amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;gt;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; ds1 =
&gt; stream1.map(new MapFunction<String,
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; Tuple3<String,String,String&amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;gt;() {
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; @Override
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; public Tuple3<String,
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; String,String&amp;amp;amp;amp;amp;gt; map(String s1) throws Exception {
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; String[]
&gt; arr = s1.split(" ");
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; return
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; Tuple3.of(arr[0],arr[1],arr[2]);
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; }
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; });
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; ds1.print();
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; DataStream<String&amp;amp;amp;amp;amp;gt; stream2 = env
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; .addSource(new FlinkKafkaConsumer09<String&amp;amp;amp;amp;amp;gt;("stream2",
&gt; new
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; SimpleStringSchema(), properties).setStartFromLatest())
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; .assignTimestampsAndWatermarks(
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; new
&gt; AssignerWithPeriodicWatermarks<String&amp;amp;amp;amp;amp;gt;() {
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; long
&gt; currentTimeStamp = 0L;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; long
&gt; maxDelayAllowed = 0L;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; long
&gt; currentWaterMark;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; @Nullable
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; @Override
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; public
&gt; Watermark getCurrentWatermark() {
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; currentWaterMark = currentTimeStamp-maxDelayAllowed;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; return new
&gt; Watermark(currentWaterMark);
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; }
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; @Override
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; public long
&gt; extractTimestamp(String s, long l) {
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; String[]
&gt; arr= s.split(" ");
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; long
&gt; timeStamp = Long.parseLong(arr[2]);
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; currentTimeStamp = Math.max(timeStamp, currentTimeStamp);
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; System.out.println("currentTimeStamp: " +&amp;amp;amp;amp;nbsp;
&gt; currentTimeStamp +",Key:" +
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; arr[0] +
&gt; ",EventTime:" + timeStamp + ",前一条数据的水位线:" + currentWaterMark);
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; return
&gt; timeStamp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; }
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; }
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; );
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; DataStream<Tuple3<String,String,String&amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;gt;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; ds2
&gt; =stream2.map(new MapFunction<String,
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; Tuple3<String,String,String&amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;gt;() {
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; @Override
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; public
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; Tuple3<String,String,String&amp;amp;amp;amp;amp;gt; map(String s2) throws
&gt; Exception {
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; String
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; [] arr =
&gt; s2.split(" ");
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; return
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; Tuple3.of(arr[0],arr[1],arr[2]);
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; }
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; });
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; ds2.print();
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; ds1.join(ds2).where(new KeySelector<Tuple3<String,
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; String,String&amp;amp;amp;amp;amp;gt;,String&amp;amp;amp;amp;amp;gt;() {
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; @Override
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; public String
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; getKey(Tuple3<String, String,String&amp;amp;amp;amp;amp;gt; value) throws
&gt; Exception {
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; return
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; value.f0;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; }
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; }).equalTo(new
&gt; KeySelector<Tuple3<String, String
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; ,String&amp;amp;amp;amp;amp;gt;, String&amp;amp;amp;amp;amp;gt;() {
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; @Override
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; public String
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; getKey(Tuple3<String, String,String&amp;amp;amp;amp;amp;gt; value) throws
&gt; Exception {
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; return
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; value.f0;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; }
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; })
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; .window(TumblingEventTimeWindows.of(Time.seconds(3)))
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; .apply(new
&gt; JoinFunction<Tuple3<String,
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; String,String&amp;amp;amp;amp;amp;gt;, Tuple3<String,
&gt; String,String&amp;amp;amp;amp;amp;gt;,
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; String&amp;amp;amp;amp;amp;gt;() {
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; @Override
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; public String
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; join(Tuple3<String, String,String&amp;amp;amp;amp;amp;gt; value1, Tuple3<String,
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; String,String&amp;amp;amp;amp;amp;gt; value2) throws Exception {
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; return
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt; value1.f1 +
&gt; "=" + value2.f1;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; }
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; }).print();
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; 结果如下:
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; currentTimeStamp:
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; 1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; 4&amp;amp;amp;amp;amp;gt; (1,tom1,1000000055000)
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; currentTimeStamp:
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; 1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; 4&amp;amp;amp;amp;amp;gt; (1,tom2,1000000056000)
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; currentTimeStamp:
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; 1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; 3&amp;amp;amp;amp;amp;gt; (1,jerry1,1000000055000)
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp; currentTimeStamp:
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; 1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; 3&amp;amp;amp;amp;amp;gt; (1,jerry2,1000000056000)
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;gt;
&gt; &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&gt; 2&amp;amp;amp;amp;amp;gt; tom1=jerry1
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; --
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Benchao Li
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; School of Electronics
&gt; Engineering and Computer Science, Peking University
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Tel:+86-15650713730
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Email:
&gt; libenchao@gmail.com; libenchao@pku.edu.cn



-- 

Benchao Li
School of Electronics Engineering and Computer Science, Peking University
Tel:+86-15650713730
Email: libenchao@gmail.com; libenchao@pku.edu.cn

Re: 回复: 回复: Flink双流Join问题

Posted by Benchao Li <li...@gmail.com>.
两个stream输入的场景,operator的watermark是取两者的最小值。
所以虽然这条数据在第一个流里面看起来已经是肯定迟到了,但是有可能看第二个流的watermark它还没有过期。


忝忝向仧 <15...@qq.com> 于2020年4月4日周六 下午10:42写道:

> Hi:
> &nbsp; &nbsp; 还有个疑问,我特意构造了个乱序的消息,还是3秒一个窗口
> stream1:
> 1 tom1 1553503185000
> 1 tom2 1553503186000
> 1 tom3 1553503187000
> 1 tom4 1553503188000
> 1 tom_late 1553503185000
>
>
>
> stream2:
> 1 jerry1 1553503185000
> 1 jerry2 1553503186000
> 1 jerry3 1553503187000
> 1 jerry4 1553503188000
>
>
> 我代码还是之前的代码,定义水印都是maxDelayAllowed = 0L;也就是没有设置最大延时时间.
> 那么,tom_late这条乱序,在第一个窗口[1553503185000,1553503188000)内不应该被输出吧?
> 但是结果还是输出了,这个是为什么?
>
>
> currentTimeStamp: 1553503185000,Key:1,EventTime:1553503185000,前一条数据的水位线:0
> 4&gt; (1,tom1,1553503185000)
> currentTimeStamp:
> 1553503186000,Key:1,EventTime:1553503186000,前一条数据的水位线:1553503185000
> 4&gt; (1,tom2,1553503186000)
> currentTimeStamp:
> 1553503187000,Key:1,EventTime:1553503187000,前一条数据的水位线:1553503186000
> 4&gt; (1,tom3,1553503187000)
> currentTimeStamp:
> 1553503188000,Key:1,EventTime:1553503188000,前一条数据的水位线:1553503187000
> 4&gt; (1,tom4,1553503188000)
> currentTimeStamp:
> 1553503188000,Key:1,EventTime:1553503185000,前一条数据的水位线:1553503188000
> 4&gt; (1,tom_late,1553503185000)
> currentTimeStamp:
> 1553503189000,Key:2,EventTime:1553503189000,前一条数据的水位线:1553503188000
> 4&gt; (2,tom5,1553503189000)
> currentTimeStamp:
> 1553503191000,Key:2,EventTime:1553503191000,前一条数据的水位线:1553503189000
> 4&gt; (2,tom6,1553503191000)
> currentTimeStamp:
> 1553503192000,Key:2,EventTime:1553503192000,前一条数据的水位线:1553503191000
> 4&gt; (2,tom7,1553503192000)
> currentTimeStamp:
> 1553503193000,Key:2,EventTime:1553503193000,前一条数据的水位线:1553503192000
> 4&gt; (2,tom8,1553503193000)
> currentTimeStamp: 1553503185000,Key:1,EventTime:1553503185000,前一条数据的水位线:0
> 3&gt; (1,jerry1,1553503185000)
> currentTimeStamp:
> 1553503186000,Key:1,EventTime:1553503186000,前一条数据的水位线:1553503185000
> 3&gt; (1,jerry2,1553503186000)
> currentTimeStamp:
> 1553503187000,Key:1,EventTime:1553503187000,前一条数据的水位线:1553503186000
> 3&gt; (1,jerry3,1553503187000)
> currentTimeStamp:
> 1553503188000,Key:1,EventTime:1553503188000,前一条数据的水位线:1553503187000
> 3&gt; (1,jerry4,1553503188000)
> 2&gt; tom1=jerry1
> 2&gt; tom1=jerry2
> 2&gt; tom1=jerry3
> 2&gt; tom2=jerry1
> 2&gt; tom2=jerry2
> 2&gt; tom2=jerry3
> 2&gt; tom3=jerry1
> 2&gt; tom3=jerry2
> 2&gt; tom3=jerry3
> 2&gt; tom_late=jerry1
> 2&gt; tom_late=jerry2
> 2&gt; tom_late=jerry3
>
>
>
>
>
>
>
>
>
>
>
>
> ------------------&nbsp;原始邮件&nbsp;------------------
> 发件人:&nbsp;"Djeng Lee"<lee.roval@gmail.com&gt;;
> 发送时间:&nbsp;2020年4月4日(星期六) 晚上6:35
> 收件人:&nbsp;"user-zh@flink.apache.org"<user-zh@flink.apache.org&gt;;
>
> 主题:&nbsp;Re: 回复: 回复: Flink双流Join问题
>
>
>
> 刚刚我说的不严谨
>
> Start = 1000000055000 - (1000000055000 - 0 + 3000) % 3000 = 1000000053000
> End = 1000000053000 + 3000
>
> //源码位置,所以窗口开端并不是你传入首条记录的作为开端。窗口划分是从0时间戳切过来的。
>
> 文档说明:
> https://ci.apache.org/projects/flink/flink-docs-release-1.10/zh/dev/event_timestamps_watermarks.html
>
> 相关代码
> public static long getWindowStartWithOffset(long timestamp, long offset,
> long windowSize) {
> &nbsp;  return timestamp - (timestamp - offset + windowSize) % windowSize;
> }
>
> 在 2020/4/4 下午6:30,“忝忝向仧”<153488125@qq.com&gt; 写入:
>
> &nbsp;&nbsp;&nbsp; 额,你的意思是滚动3秒的窗口开始和结束应该是
> &nbsp;&nbsp;&nbsp; 1000000055000 % 3 得出结果再拿到[start,end).
> &nbsp;&nbsp;&nbsp; 比如1000000055000 % 3
> 的结果是1000000053000,那么窗口是[1000000053000,1000000056000)
> &nbsp;&nbsp;&nbsp; 是这么理解吧
> &nbsp;&nbsp;&nbsp;
> &nbsp;&nbsp;&nbsp;
> &nbsp;&nbsp;&nbsp;
> ------------------&amp;nbsp;原始邮件&amp;nbsp;------------------
> &nbsp;&nbsp;&nbsp; 发件人:&amp;nbsp;"lee.roval"<lee.roval@gmail.com&amp;gt;;
> &nbsp;&nbsp;&nbsp; 发送时间:&amp;nbsp;2020年4月4日(星期六) 晚上6:25
> &nbsp;&nbsp;&nbsp; 收件人:&amp;nbsp;"user-zh@flink.apache.org"<
> user-zh@flink.apache.org&amp;gt;;
> &nbsp;&nbsp;&nbsp;
> &nbsp;&nbsp;&nbsp; 主题:&amp;nbsp;Re: 回复: Flink双流Join问题
> &nbsp;&nbsp;&nbsp;
> &nbsp;&nbsp;&nbsp;
> &nbsp;&nbsp;&nbsp;
> &nbsp;&nbsp;&nbsp; 55000的窗口分配,是对windowSize 求模然后拿到start 和 end。 不是从你首条记录开始算。
> &nbsp;&nbsp;&nbsp;
> &nbsp;&nbsp;&nbsp; 在 2020/4/4 下午6:23,“忝忝向仧”<153488125@qq.com&amp;gt; 写入:
> &nbsp;&nbsp;&nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 对,我只是回复把前面那串省略了,没写.
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> [1000000053000,1000000056000),为什么是1000000053000开始?
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 我第一条输入的是
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1,tom1,1000000055000
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> ------------------&amp;amp;nbsp;原始邮件&amp;amp;nbsp;------------------
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> 发件人:&amp;amp;nbsp;"libenchao"<libenchao@gmail.com&amp;amp;gt;;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> 发送时间:&amp;amp;nbsp;2020年4月4日(星期六) 晚上6:20
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> 收件人:&amp;amp;nbsp;"user-zh"<user-zh@flink.apache.org&amp;amp;gt;;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 主题:&amp;amp;nbsp;Re:
> Flink双流Join问题
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> 你的watermark不是56000,而是1000000056000吧。所以应该是[1000000053000,
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1000000056000)是一个窗口吧。
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 忝忝向仧 <153488125@qq.com&amp;amp;gt;
> 于2020年4月4日周六 下午6:16写道:
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 下发新的?
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> 4是一个kafka的source,3是另外一个kafka的source.
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 如果按照3秒的一个窗口
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> watermark触发窗口的条件是watermark_time&amp;amp;amp;gt;=window_endtime
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> 也就是说[55000,57000)应该是一个窗口的.
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> 我是这么理解的,但是结果56000后就输出了
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> currentTimeStamp:&amp;amp;amp;nbsp;1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> 4&amp;amp;amp;gt; (1,tom1,1000000055000)
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> currentTimeStamp:&amp;amp;amp;nbsp;1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> 4&amp;amp;amp;gt; (1,tom2,1000000056000)
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> currentTimeStamp:&amp;amp;amp;nbsp;1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> 3&amp;amp;amp;gt; (1,jerry1,1000000055000)
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> currentTimeStamp:&amp;amp;amp;nbsp;1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> 3&amp;amp;amp;gt; (1,jerry2,1000000056000)
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> 2&amp;amp;amp;gt; tom1=jerry1
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> ------------------&amp;amp;amp;nbsp;原始邮件&amp;amp;amp;nbsp;------------------
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> 发件人:&amp;amp;amp;nbsp;"lee.roval"<lee.roval@gmail.com&amp;amp;amp;gt;;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> 发送时间:&amp;amp;amp;nbsp;2020年4月4日(星期六) 晚上6:10
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> 收件人:&amp;amp;amp;nbsp;"user-zh@flink.apache.org"<user-zh@flink.apache.org
> &amp;amp;amp;gt;;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> 主题:&amp;amp;amp;nbsp;Re: Flink双流Join问题
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> 56000后不是下发新的watermark了嘛
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 在 2020/4/4
> 下午5:57,“忝忝向仧”<153488125@qq.com&amp;amp;amp;gt; 写入:
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> 各位好:&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp;
> &amp;amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> Flink双流Join遇到一个问题,能否解释下,谢谢.
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp;
> &amp;amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> ds1和ds2分别读取kafka两个流数据,使用event time和watermark特性,3s的一个翻滚窗口,定义如下:
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp;
> &amp;amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> 最后,join输出的时候,为什么触发窗口的数据第二条就触发了?
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp;
> &amp;amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> 按照水印的触发条件应该是watermark_time&amp;amp;amp;amp;gt;=window_endtime.那么,这里应该是1000000057000这条数据来了后才会触发,但是结果却是56000就触发了.为什么?
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 定义的代码如下:
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> DataStream<String&amp;amp;amp;amp;gt; stream1 = env
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> .addSource(new FlinkKafkaConsumer09<String&amp;amp;amp;amp;gt;("stream1",
> new
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> SimpleStringSchema(), properties).setStartFromLatest())
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> .assignTimestampsAndWatermarks(
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; new
> AssignerWithPeriodicWatermarks<String&amp;amp;amp;amp;gt;() {
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; long
> currentTimeStamp = 0L;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; long
> maxDelayAllowed = 0L;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; long
> currentWaterMark;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; @Nullable
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; @Override
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; public
> Watermark getCurrentWatermark() {
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> currentWaterMark = currentTimeStamp-maxDelayAllowed;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; return new
> Watermark(currentWaterMark);
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; }
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; @Override
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; public long
> extractTimestamp(String s, long l) {
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; String[]
> arr= s.split(" ");
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; long
> timeStamp = Long.parseLong(arr[2]);
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> currentTimeStamp = Math.max(timeStamp, currentTimeStamp);
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> System.out.println("currentTimeStamp: " +&amp;amp;amp;nbsp;
> currentTimeStamp +",Key:" +
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; arr[0] +
> ",EventTime:" + timeStamp + ",前一条数据的水位线:" + currentWaterMark);
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; return
> timeStamp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; }
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; }
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> );
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> DataStream<Tuple3<String,String,String&amp;amp;amp;amp;gt;&amp;amp;amp;amp;gt;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; ds1 =
> stream1.map(new MapFunction<String,
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> Tuple3<String,String,String&amp;amp;amp;amp;gt;&amp;amp;amp;amp;gt;() {
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> @Override
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> public Tuple3<String,
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> String,String&amp;amp;amp;amp;gt; map(String s1) throws Exception {
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; String[]
> arr = s1.split(" ");
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> return
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> Tuple3.of(arr[0],arr[1],arr[2]);
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> }
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; });
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; ds1.print();
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> DataStream<String&amp;amp;amp;amp;gt; stream2 = env
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> .addSource(new FlinkKafkaConsumer09<String&amp;amp;amp;amp;gt;("stream2",
> new
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> SimpleStringSchema(), properties).setStartFromLatest())
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> .assignTimestampsAndWatermarks(
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; new
> AssignerWithPeriodicWatermarks<String&amp;amp;amp;amp;gt;() {
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; long
> currentTimeStamp = 0L;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; long
> maxDelayAllowed = 0L;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; long
> currentWaterMark;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; @Nullable
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; @Override
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; public
> Watermark getCurrentWatermark() {
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> currentWaterMark = currentTimeStamp-maxDelayAllowed;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; return new
> Watermark(currentWaterMark);
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; }
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; @Override
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; public long
> extractTimestamp(String s, long l) {
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; String[]
> arr= s.split(" ");
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; long
> timeStamp = Long.parseLong(arr[2]);
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> currentTimeStamp = Math.max(timeStamp, currentTimeStamp);
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> System.out.println("currentTimeStamp: " +&amp;amp;amp;nbsp;
> currentTimeStamp +",Key:" +
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; arr[0] +
> ",EventTime:" + timeStamp + ",前一条数据的水位线:" + currentWaterMark);
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; return
> timeStamp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; }
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; }
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> );
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> DataStream<Tuple3<String,String,String&amp;amp;amp;amp;gt;&amp;amp;amp;amp;gt;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; ds2
> =stream2.map(new MapFunction<String,
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> Tuple3<String,String,String&amp;amp;amp;amp;gt;&amp;amp;amp;amp;gt;() {
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> @Override
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> public
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> Tuple3<String,String,String&amp;amp;amp;amp;gt; map(String s2) throws
> Exception {
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> String
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; [] arr =
> s2.split(" ");
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> return
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> Tuple3.of(arr[0],arr[1],arr[2]);
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> }
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; });
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; ds2.print();
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> ds1.join(ds2).where(new KeySelector<Tuple3<String,
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> String,String&amp;amp;amp;amp;gt;,String&amp;amp;amp;amp;gt;() {
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> @Override
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> public String
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> getKey(Tuple3<String, String,String&amp;amp;amp;amp;gt; value) throws
> Exception {
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> return
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; value.f0;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> }
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; }).equalTo(new
> KeySelector<Tuple3<String, String
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> ,String&amp;amp;amp;amp;gt;, String&amp;amp;amp;amp;gt;() {
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> @Override
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> public String
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> getKey(Tuple3<String, String,String&amp;amp;amp;amp;gt; value) throws
> Exception {
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> return
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; value.f0;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> }
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; })
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> .window(TumblingEventTimeWindows.of(Time.seconds(3)))
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; .apply(new
> JoinFunction<Tuple3<String,
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> String,String&amp;amp;amp;amp;gt;, Tuple3<String,
> String,String&amp;amp;amp;amp;gt;,
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> String&amp;amp;amp;amp;gt;() {
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> @Override
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> public String
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> join(Tuple3<String, String,String&amp;amp;amp;amp;gt; value1, Tuple3<String,
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> String,String&amp;amp;amp;amp;gt; value2) throws Exception {
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> return
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; value1.f1 +
> "=" + value2.f1;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> }
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; }).print();
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 结果如下:
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; currentTimeStamp:
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> 1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> 4&amp;amp;amp;amp;gt; (1,tom1,1000000055000)
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; currentTimeStamp:
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> 1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> 4&amp;amp;amp;amp;gt; (1,tom2,1000000056000)
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; currentTimeStamp:
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> 1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> 3&amp;amp;amp;amp;gt; (1,jerry1,1000000055000)
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; currentTimeStamp:
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> 1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> 3&amp;amp;amp;amp;gt; (1,jerry2,1000000056000)
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
> &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
> 2&amp;amp;amp;amp;gt; tom1=jerry1
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; --
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Benchao Li
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; School of Electronics
> Engineering and Computer Science, Peking University
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Tel:+86-15650713730
> &nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Email:
> libenchao@gmail.com; libenchao@pku.edu.cn



-- 

Benchao Li
School of Electronics Engineering and Computer Science, Peking University
Tel:+86-15650713730
Email: libenchao@gmail.com; libenchao@pku.edu.cn

回复: 回复: 回复: Flink双流Join问题

Posted by 忝忝向仧 <15...@qq.com>.
Hi:
&nbsp; &nbsp; 还有个疑问,我特意构造了个乱序的消息,还是3秒一个窗口
stream1:
1 tom1 1553503185000
1 tom2 1553503186000
1 tom3 1553503187000
1 tom4 1553503188000
1 tom_late 1553503185000



stream2:
1 jerry1 1553503185000
1 jerry2 1553503186000
1 jerry3 1553503187000
1 jerry4 1553503188000


我代码还是之前的代码,定义水印都是maxDelayAllowed = 0L;也就是没有设置最大延时时间.
那么,tom_late这条乱序,在第一个窗口[1553503185000,1553503188000)内不应该被输出吧?
但是结果还是输出了,这个是为什么?


currentTimeStamp: 1553503185000,Key:1,EventTime:1553503185000,前一条数据的水位线:0
4&gt; (1,tom1,1553503185000)
currentTimeStamp: 1553503186000,Key:1,EventTime:1553503186000,前一条数据的水位线:1553503185000
4&gt; (1,tom2,1553503186000)
currentTimeStamp: 1553503187000,Key:1,EventTime:1553503187000,前一条数据的水位线:1553503186000
4&gt; (1,tom3,1553503187000)
currentTimeStamp: 1553503188000,Key:1,EventTime:1553503188000,前一条数据的水位线:1553503187000
4&gt; (1,tom4,1553503188000)
currentTimeStamp: 1553503188000,Key:1,EventTime:1553503185000,前一条数据的水位线:1553503188000
4&gt; (1,tom_late,1553503185000)
currentTimeStamp: 1553503189000,Key:2,EventTime:1553503189000,前一条数据的水位线:1553503188000
4&gt; (2,tom5,1553503189000)
currentTimeStamp: 1553503191000,Key:2,EventTime:1553503191000,前一条数据的水位线:1553503189000
4&gt; (2,tom6,1553503191000)
currentTimeStamp: 1553503192000,Key:2,EventTime:1553503192000,前一条数据的水位线:1553503191000
4&gt; (2,tom7,1553503192000)
currentTimeStamp: 1553503193000,Key:2,EventTime:1553503193000,前一条数据的水位线:1553503192000
4&gt; (2,tom8,1553503193000)
currentTimeStamp: 1553503185000,Key:1,EventTime:1553503185000,前一条数据的水位线:0
3&gt; (1,jerry1,1553503185000)
currentTimeStamp: 1553503186000,Key:1,EventTime:1553503186000,前一条数据的水位线:1553503185000
3&gt; (1,jerry2,1553503186000)
currentTimeStamp: 1553503187000,Key:1,EventTime:1553503187000,前一条数据的水位线:1553503186000
3&gt; (1,jerry3,1553503187000)
currentTimeStamp: 1553503188000,Key:1,EventTime:1553503188000,前一条数据的水位线:1553503187000
3&gt; (1,jerry4,1553503188000)
2&gt; tom1=jerry1
2&gt; tom1=jerry2
2&gt; tom1=jerry3
2&gt; tom2=jerry1
2&gt; tom2=jerry2
2&gt; tom2=jerry3
2&gt; tom3=jerry1
2&gt; tom3=jerry2
2&gt; tom3=jerry3
2&gt; tom_late=jerry1
2&gt; tom_late=jerry2
2&gt; tom_late=jerry3












------------------&nbsp;原始邮件&nbsp;------------------
发件人:&nbsp;"Djeng Lee"<lee.roval@gmail.com&gt;;
发送时间:&nbsp;2020年4月4日(星期六) 晚上6:35
收件人:&nbsp;"user-zh@flink.apache.org"<user-zh@flink.apache.org&gt;;

主题:&nbsp;Re: 回复: 回复: Flink双流Join问题



刚刚我说的不严谨

Start = 1000000055000 - (1000000055000 - 0 + 3000) % 3000 = 1000000053000
End = 1000000053000 + 3000

//源码位置,所以窗口开端并不是你传入首条记录的作为开端。窗口划分是从0时间戳切过来的。

文档说明: https://ci.apache.org/projects/flink/flink-docs-release-1.10/zh/dev/event_timestamps_watermarks.html

相关代码
public static long getWindowStartWithOffset(long timestamp, long offset, long windowSize) {
&nbsp;	return timestamp - (timestamp - offset + windowSize) % windowSize;
}

在 2020/4/4 下午6:30,“忝忝向仧”<153488125@qq.com&gt; 写入:

&nbsp;&nbsp;&nbsp; 额,你的意思是滚动3秒的窗口开始和结束应该是
&nbsp;&nbsp;&nbsp; 1000000055000 % 3 得出结果再拿到[start,end).
&nbsp;&nbsp;&nbsp; 比如1000000055000 % 3 的结果是1000000053000,那么窗口是[1000000053000,1000000056000)
&nbsp;&nbsp;&nbsp; 是这么理解吧
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; ------------------&amp;nbsp;原始邮件&amp;nbsp;------------------
&nbsp;&nbsp;&nbsp; 发件人:&amp;nbsp;"lee.roval"<lee.roval@gmail.com&amp;gt;;
&nbsp;&nbsp;&nbsp; 发送时间:&amp;nbsp;2020年4月4日(星期六) 晚上6:25
&nbsp;&nbsp;&nbsp; 收件人:&amp;nbsp;"user-zh@flink.apache.org"<user-zh@flink.apache.org&amp;gt;;
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 主题:&amp;nbsp;Re: 回复: Flink双流Join问题
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 55000的窗口分配,是对windowSize 求模然后拿到start 和 end。 不是从你首条记录开始算。
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 在 2020/4/4 下午6:23,“忝忝向仧”<153488125@qq.com&amp;gt; 写入:
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 对,我只是回复把前面那串省略了,没写.
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [1000000053000,1000000056000),为什么是1000000053000开始?
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 我第一条输入的是
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1,tom1,1000000055000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ------------------&amp;amp;nbsp;原始邮件&amp;amp;nbsp;------------------
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 发件人:&amp;amp;nbsp;"libenchao"<libenchao@gmail.com&amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 发送时间:&amp;amp;nbsp;2020年4月4日(星期六) 晚上6:20
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 收件人:&amp;amp;nbsp;"user-zh"<user-zh@flink.apache.org&amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 主题:&amp;amp;nbsp;Re: Flink双流Join问题
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 你的watermark不是56000,而是1000000056000吧。所以应该是[1000000053000,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1000000056000)是一个窗口吧。
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 忝忝向仧 <153488125@qq.com&amp;amp;gt; 于2020年4月4日周六 下午6:16写道:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 下发新的?
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 4是一个kafka的source,3是另外一个kafka的source.
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 如果按照3秒的一个窗口
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; watermark触发窗口的条件是watermark_time&amp;amp;amp;gt;=window_endtime
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 也就是说[55000,57000)应该是一个窗口的.
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 我是这么理解的,但是结果56000后就输出了
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; currentTimeStamp:&amp;amp;amp;nbsp;1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 4&amp;amp;amp;gt; (1,tom1,1000000055000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; currentTimeStamp:&amp;amp;amp;nbsp;1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 4&amp;amp;amp;gt; (1,tom2,1000000056000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; currentTimeStamp:&amp;amp;amp;nbsp;1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 3&amp;amp;amp;gt; (1,jerry1,1000000055000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; currentTimeStamp:&amp;amp;amp;nbsp;1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 3&amp;amp;amp;gt; (1,jerry2,1000000056000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 2&amp;amp;amp;gt; tom1=jerry1
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; ------------------&amp;amp;amp;nbsp;原始邮件&amp;amp;amp;nbsp;------------------
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 发件人:&amp;amp;amp;nbsp;"lee.roval"<lee.roval@gmail.com&amp;amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 发送时间:&amp;amp;amp;nbsp;2020年4月4日(星期六) 晚上6:10
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 收件人:&amp;amp;amp;nbsp;"user-zh@flink.apache.org"<user-zh@flink.apache.org&amp;amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 主题:&amp;amp;amp;nbsp;Re: Flink双流Join问题
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 56000后不是下发新的watermark了嘛
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 在 2020/4/4 下午5:57,“忝忝向仧”<153488125@qq.com&amp;amp;amp;gt; 写入:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 各位好:&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; Flink双流Join遇到一个问题,能否解释下,谢谢.
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; ds1和ds2分别读取kafka两个流数据,使用event time和watermark特性,3s的一个翻滚窗口,定义如下:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 最后,join输出的时候,为什么触发窗口的数据第二条就触发了?
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 按照水印的触发条件应该是watermark_time&amp;amp;amp;amp;gt;=window_endtime.那么,这里应该是1000000057000这条数据来了后才会触发,但是结果却是56000就触发了.为什么?
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 定义的代码如下:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; DataStream<String&amp;amp;amp;amp;gt; stream1 = env
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; .addSource(new FlinkKafkaConsumer09<String&amp;amp;amp;amp;gt;("stream1", new
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; SimpleStringSchema(), properties).setStartFromLatest())
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; .assignTimestampsAndWatermarks(
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; new AssignerWithPeriodicWatermarks<String&amp;amp;amp;amp;gt;() {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; long currentTimeStamp = 0L;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; long maxDelayAllowed = 0L;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; long currentWaterMark;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; @Nullable
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; @Override
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; public Watermark getCurrentWatermark() {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; currentWaterMark = currentTimeStamp-maxDelayAllowed;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; return new Watermark(currentWaterMark);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; @Override
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; public long extractTimestamp(String s, long l) {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; String[] arr= s.split(" ");
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; long timeStamp = Long.parseLong(arr[2]);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; currentTimeStamp = Math.max(timeStamp, currentTimeStamp);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; System.out.println("currentTimeStamp: " +&amp;amp;amp;nbsp; currentTimeStamp +",Key:" +
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; arr[0] + ",EventTime:" + timeStamp + ",前一条数据的水位线:" + currentWaterMark);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; return timeStamp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; );
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; DataStream<Tuple3<String,String,String&amp;amp;amp;amp;gt;&amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; ds1 = stream1.map(new MapFunction<String,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; Tuple3<String,String,String&amp;amp;amp;amp;gt;&amp;amp;amp;amp;gt;() {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; @Override
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; public Tuple3<String,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; String,String&amp;amp;amp;amp;gt; map(String s1) throws Exception {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; String[] arr = s1.split(" ");
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; return
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; Tuple3.of(arr[0],arr[1],arr[2]);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; });
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; ds1.print();
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; DataStream<String&amp;amp;amp;amp;gt; stream2 = env
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; .addSource(new FlinkKafkaConsumer09<String&amp;amp;amp;amp;gt;("stream2", new
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; SimpleStringSchema(), properties).setStartFromLatest())
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; .assignTimestampsAndWatermarks(
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; new AssignerWithPeriodicWatermarks<String&amp;amp;amp;amp;gt;() {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; long currentTimeStamp = 0L;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; long maxDelayAllowed = 0L;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; long currentWaterMark;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; @Nullable
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; @Override
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; public Watermark getCurrentWatermark() {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; currentWaterMark = currentTimeStamp-maxDelayAllowed;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; return new Watermark(currentWaterMark);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; @Override
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; public long extractTimestamp(String s, long l) {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; String[] arr= s.split(" ");
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; long timeStamp = Long.parseLong(arr[2]);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; currentTimeStamp = Math.max(timeStamp, currentTimeStamp);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; System.out.println("currentTimeStamp: " +&amp;amp;amp;nbsp; currentTimeStamp +",Key:" +
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; arr[0] + ",EventTime:" + timeStamp + ",前一条数据的水位线:" + currentWaterMark);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; return timeStamp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; );
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; DataStream<Tuple3<String,String,String&amp;amp;amp;amp;gt;&amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; ds2 =stream2.map(new MapFunction<String,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; Tuple3<String,String,String&amp;amp;amp;amp;gt;&amp;amp;amp;amp;gt;() {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; @Override
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; public
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; Tuple3<String,String,String&amp;amp;amp;amp;gt; map(String s2) throws Exception {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; String
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; [] arr = s2.split(" ");
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; return
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; Tuple3.of(arr[0],arr[1],arr[2]);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; });
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; ds2.print();
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; ds1.join(ds2).where(new KeySelector<Tuple3<String,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; String,String&amp;amp;amp;amp;gt;,String&amp;amp;amp;amp;gt;() {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; @Override
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; public String
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; getKey(Tuple3<String, String,String&amp;amp;amp;amp;gt; value) throws Exception {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; return
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; value.f0;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; }).equalTo(new KeySelector<Tuple3<String, String
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; ,String&amp;amp;amp;amp;gt;, String&amp;amp;amp;amp;gt;() {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; @Override
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; public String
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; getKey(Tuple3<String, String,String&amp;amp;amp;amp;gt; value) throws Exception {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; return
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; value.f0;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; })
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; .window(TumblingEventTimeWindows.of(Time.seconds(3)))
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; .apply(new JoinFunction<Tuple3<String,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; String,String&amp;amp;amp;amp;gt;, Tuple3<String, String,String&amp;amp;amp;amp;gt;,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; String&amp;amp;amp;amp;gt;() {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; @Override
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; public String
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; join(Tuple3<String, String,String&amp;amp;amp;amp;gt; value1, Tuple3<String,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; String,String&amp;amp;amp;amp;gt; value2) throws Exception {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; return
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; value1.f1 + "=" + value2.f1;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; }).print();
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 结果如下:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 4&amp;amp;amp;amp;gt; (1,tom1,1000000055000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 4&amp;amp;amp;amp;gt; (1,tom2,1000000056000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 3&amp;amp;amp;amp;gt; (1,jerry1,1000000055000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 3&amp;amp;amp;amp;gt; (1,jerry2,1000000056000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 2&amp;amp;amp;amp;gt; tom1=jerry1
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Benchao Li
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; School of Electronics Engineering and Computer Science, Peking University
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Tel:+86-15650713730
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Email: libenchao@gmail.com; libenchao@pku.edu.cn

回复: 回复: 回复: Flink双流Join问题

Posted by 忝忝向仧 <15...@qq.com>.
文档说明: https://ci.apache.org/projects/flink/flink-docs-release-1.10/zh/dev/event_timestamps_watermarks.html


这个网页我打不开,有其他的地址么?
谢谢




------------------&nbsp;原始邮件&nbsp;------------------
发件人:&nbsp;"Djeng Lee"<lee.roval@gmail.com&gt;;
发送时间:&nbsp;2020年4月4日(星期六) 晚上6:35
收件人:&nbsp;"user-zh@flink.apache.org"<user-zh@flink.apache.org&gt;;

主题:&nbsp;Re: 回复: 回复: Flink双流Join问题



刚刚我说的不严谨

Start = 1000000055000 - (1000000055000 - 0 + 3000) % 3000 = 1000000053000
End = 1000000053000 + 3000

//源码位置,所以窗口开端并不是你传入首条记录的作为开端。窗口划分是从0时间戳切过来的。

文档说明: https://ci.apache.org/projects/flink/flink-docs-release-1.10/zh/dev/event_timestamps_watermarks.html

相关代码
public static long getWindowStartWithOffset(long timestamp, long offset, long windowSize) {
&nbsp;	return timestamp - (timestamp - offset + windowSize) % windowSize;
}

在 2020/4/4 下午6:30,“忝忝向仧”<153488125@qq.com&gt; 写入:

&nbsp;&nbsp;&nbsp; 额,你的意思是滚动3秒的窗口开始和结束应该是
&nbsp;&nbsp;&nbsp; 1000000055000 % 3 得出结果再拿到[start,end).
&nbsp;&nbsp;&nbsp; 比如1000000055000 % 3 的结果是1000000053000,那么窗口是[1000000053000,1000000056000)
&nbsp;&nbsp;&nbsp; 是这么理解吧
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; ------------------&amp;nbsp;原始邮件&amp;nbsp;------------------
&nbsp;&nbsp;&nbsp; 发件人:&amp;nbsp;"lee.roval"<lee.roval@gmail.com&amp;gt;;
&nbsp;&nbsp;&nbsp; 发送时间:&amp;nbsp;2020年4月4日(星期六) 晚上6:25
&nbsp;&nbsp;&nbsp; 收件人:&amp;nbsp;"user-zh@flink.apache.org"<user-zh@flink.apache.org&amp;gt;;
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 主题:&amp;nbsp;Re: 回复: Flink双流Join问题
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 55000的窗口分配,是对windowSize 求模然后拿到start 和 end。 不是从你首条记录开始算。
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 在 2020/4/4 下午6:23,“忝忝向仧”<153488125@qq.com&amp;gt; 写入:
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 对,我只是回复把前面那串省略了,没写.
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [1000000053000,1000000056000),为什么是1000000053000开始?
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 我第一条输入的是
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1,tom1,1000000055000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ------------------&amp;amp;nbsp;原始邮件&amp;amp;nbsp;------------------
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 发件人:&amp;amp;nbsp;"libenchao"<libenchao@gmail.com&amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 发送时间:&amp;amp;nbsp;2020年4月4日(星期六) 晚上6:20
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 收件人:&amp;amp;nbsp;"user-zh"<user-zh@flink.apache.org&amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 主题:&amp;amp;nbsp;Re: Flink双流Join问题
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 你的watermark不是56000,而是1000000056000吧。所以应该是[1000000053000,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1000000056000)是一个窗口吧。
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 忝忝向仧 <153488125@qq.com&amp;amp;gt; 于2020年4月4日周六 下午6:16写道:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 下发新的?
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 4是一个kafka的source,3是另外一个kafka的source.
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 如果按照3秒的一个窗口
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; watermark触发窗口的条件是watermark_time&amp;amp;amp;gt;=window_endtime
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 也就是说[55000,57000)应该是一个窗口的.
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 我是这么理解的,但是结果56000后就输出了
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; currentTimeStamp:&amp;amp;amp;nbsp;1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 4&amp;amp;amp;gt; (1,tom1,1000000055000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; currentTimeStamp:&amp;amp;amp;nbsp;1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 4&amp;amp;amp;gt; (1,tom2,1000000056000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; currentTimeStamp:&amp;amp;amp;nbsp;1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 3&amp;amp;amp;gt; (1,jerry1,1000000055000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; currentTimeStamp:&amp;amp;amp;nbsp;1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 3&amp;amp;amp;gt; (1,jerry2,1000000056000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 2&amp;amp;amp;gt; tom1=jerry1
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; ------------------&amp;amp;amp;nbsp;原始邮件&amp;amp;amp;nbsp;------------------
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 发件人:&amp;amp;amp;nbsp;"lee.roval"<lee.roval@gmail.com&amp;amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 发送时间:&amp;amp;amp;nbsp;2020年4月4日(星期六) 晚上6:10
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 收件人:&amp;amp;amp;nbsp;"user-zh@flink.apache.org"<user-zh@flink.apache.org&amp;amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 主题:&amp;amp;amp;nbsp;Re: Flink双流Join问题
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 56000后不是下发新的watermark了嘛
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 在 2020/4/4 下午5:57,“忝忝向仧”<153488125@qq.com&amp;amp;amp;gt; 写入:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 各位好:&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; Flink双流Join遇到一个问题,能否解释下,谢谢.
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; ds1和ds2分别读取kafka两个流数据,使用event time和watermark特性,3s的一个翻滚窗口,定义如下:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 最后,join输出的时候,为什么触发窗口的数据第二条就触发了?
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 按照水印的触发条件应该是watermark_time&amp;amp;amp;amp;gt;=window_endtime.那么,这里应该是1000000057000这条数据来了后才会触发,但是结果却是56000就触发了.为什么?
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 定义的代码如下:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; DataStream<String&amp;amp;amp;amp;gt; stream1 = env
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; .addSource(new FlinkKafkaConsumer09<String&amp;amp;amp;amp;gt;("stream1", new
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; SimpleStringSchema(), properties).setStartFromLatest())
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; .assignTimestampsAndWatermarks(
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; new AssignerWithPeriodicWatermarks<String&amp;amp;amp;amp;gt;() {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; long currentTimeStamp = 0L;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; long maxDelayAllowed = 0L;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; long currentWaterMark;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; @Nullable
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; @Override
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; public Watermark getCurrentWatermark() {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; currentWaterMark = currentTimeStamp-maxDelayAllowed;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; return new Watermark(currentWaterMark);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; @Override
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; public long extractTimestamp(String s, long l) {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; String[] arr= s.split(" ");
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; long timeStamp = Long.parseLong(arr[2]);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; currentTimeStamp = Math.max(timeStamp, currentTimeStamp);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; System.out.println("currentTimeStamp: " +&amp;amp;amp;nbsp; currentTimeStamp +",Key:" +
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; arr[0] + ",EventTime:" + timeStamp + ",前一条数据的水位线:" + currentWaterMark);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; return timeStamp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; );
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; DataStream<Tuple3<String,String,String&amp;amp;amp;amp;gt;&amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; ds1 = stream1.map(new MapFunction<String,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; Tuple3<String,String,String&amp;amp;amp;amp;gt;&amp;amp;amp;amp;gt;() {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; @Override
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; public Tuple3<String,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; String,String&amp;amp;amp;amp;gt; map(String s1) throws Exception {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; String[] arr = s1.split(" ");
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; return
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; Tuple3.of(arr[0],arr[1],arr[2]);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; });
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; ds1.print();
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; DataStream<String&amp;amp;amp;amp;gt; stream2 = env
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; .addSource(new FlinkKafkaConsumer09<String&amp;amp;amp;amp;gt;("stream2", new
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; SimpleStringSchema(), properties).setStartFromLatest())
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; .assignTimestampsAndWatermarks(
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; new AssignerWithPeriodicWatermarks<String&amp;amp;amp;amp;gt;() {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; long currentTimeStamp = 0L;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; long maxDelayAllowed = 0L;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; long currentWaterMark;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; @Nullable
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; @Override
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; public Watermark getCurrentWatermark() {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; currentWaterMark = currentTimeStamp-maxDelayAllowed;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; return new Watermark(currentWaterMark);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; @Override
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; public long extractTimestamp(String s, long l) {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; String[] arr= s.split(" ");
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; long timeStamp = Long.parseLong(arr[2]);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; currentTimeStamp = Math.max(timeStamp, currentTimeStamp);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; System.out.println("currentTimeStamp: " +&amp;amp;amp;nbsp; currentTimeStamp +",Key:" +
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; arr[0] + ",EventTime:" + timeStamp + ",前一条数据的水位线:" + currentWaterMark);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; return timeStamp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; );
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; DataStream<Tuple3<String,String,String&amp;amp;amp;amp;gt;&amp;amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; ds2 =stream2.map(new MapFunction<String,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; Tuple3<String,String,String&amp;amp;amp;amp;gt;&amp;amp;amp;amp;gt;() {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; @Override
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; public
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; Tuple3<String,String,String&amp;amp;amp;amp;gt; map(String s2) throws Exception {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; String
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; [] arr = s2.split(" ");
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; return
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; Tuple3.of(arr[0],arr[1],arr[2]);
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; });
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; ds2.print();
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; ds1.join(ds2).where(new KeySelector<Tuple3<String,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; String,String&amp;amp;amp;amp;gt;,String&amp;amp;amp;amp;gt;() {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; @Override
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; public String
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; getKey(Tuple3<String, String,String&amp;amp;amp;amp;gt; value) throws Exception {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; return
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; value.f0;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; }).equalTo(new KeySelector<Tuple3<String, String
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; ,String&amp;amp;amp;amp;gt;, String&amp;amp;amp;amp;gt;() {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; @Override
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; public String
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; getKey(Tuple3<String, String,String&amp;amp;amp;amp;gt; value) throws Exception {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; return
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; value.f0;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; })
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; .window(TumblingEventTimeWindows.of(Time.seconds(3)))
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; .apply(new JoinFunction<Tuple3<String,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; String,String&amp;amp;amp;amp;gt;, Tuple3<String, String,String&amp;amp;amp;amp;gt;,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; String&amp;amp;amp;amp;gt;() {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; @Override
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; public String
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; join(Tuple3<String, String,String&amp;amp;amp;amp;gt; value1, Tuple3<String,
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; String,String&amp;amp;amp;amp;gt; value2) throws Exception {
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; return
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; value1.f1 + "=" + value2.f1;
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; }
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; }).print();
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 结果如下:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 4&amp;amp;amp;amp;gt; (1,tom1,1000000055000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 4&amp;amp;amp;amp;gt; (1,tom2,1000000056000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 3&amp;amp;amp;amp;gt; (1,jerry1,1000000055000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; 1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 3&amp;amp;amp;amp;gt; (1,jerry2,1000000056000)
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;gt; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; 2&amp;amp;amp;amp;gt; tom1=jerry1
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -- 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Benchao Li
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; School of Electronics Engineering and Computer Science, Peking University
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Tel:+86-15650713730
&nbsp;&nbsp;&nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Email: libenchao@gmail.com; libenchao@pku.edu.cn

Re: 回复: 回复: Flink双流Join问题

Posted by Djeng Lee <le...@gmail.com>.
刚刚我说的不严谨

Start = 1000000055000 - (1000000055000 - 0 + 3000) % 3000 = 1000000053000
End = 1000000053000 + 3000

//源码位置,所以窗口开端并不是你传入首条记录的作为开端。窗口划分是从0时间戳切过来的。

文档说明: https://ci.apache.org/projects/flink/flink-docs-release-1.10/zh/dev/event_timestamps_watermarks.html

相关代码
public static long getWindowStartWithOffset(long timestamp, long offset, long windowSize) {
 	return timestamp - (timestamp - offset + windowSize) % windowSize;
}

在 2020/4/4 下午6:30,“忝忝向仧”<15...@qq.com> 写入:

    额,你的意思是滚动3秒的窗口开始和结束应该是
    1000000055000 % 3 得出结果再拿到[start,end).
    比如1000000055000 % 3 的结果是1000000053000,那么窗口是[1000000053000,1000000056000)
    是这么理解吧
    
    
    ------------------&nbsp;原始邮件&nbsp;------------------
    发件人:&nbsp;"lee.roval"<lee.roval@gmail.com&gt;;
    发送时间:&nbsp;2020年4月4日(星期六) 晚上6:25
    收件人:&nbsp;"user-zh@flink.apache.org"<user-zh@flink.apache.org&gt;;
    
    主题:&nbsp;Re: 回复: Flink双流Join问题
    
    
    
    55000的窗口分配,是对windowSize 求模然后拿到start 和 end。 不是从你首条记录开始算。
    
    在 2020/4/4 下午6:23,“忝忝向仧”<153488125@qq.com&gt; 写入:
    
    &nbsp;&nbsp;&nbsp; 对,我只是回复把前面那串省略了,没写.
    &nbsp;&nbsp;&nbsp; [1000000053000,1000000056000),为什么是1000000053000开始?
    &nbsp;&nbsp;&nbsp; 我第一条输入的是
    &nbsp;&nbsp;&nbsp; 1,tom1,1000000055000
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; ------------------&amp;nbsp;原始邮件&amp;nbsp;------------------
    &nbsp;&nbsp;&nbsp; 发件人:&amp;nbsp;"libenchao"<libenchao@gmail.com&amp;gt;;
    &nbsp;&nbsp;&nbsp; 发送时间:&amp;nbsp;2020年4月4日(星期六) 晚上6:20
    &nbsp;&nbsp;&nbsp; 收件人:&amp;nbsp;"user-zh"<user-zh@flink.apache.org&amp;gt;;
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 主题:&amp;nbsp;Re: Flink双流Join问题
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 你的watermark不是56000,而是1000000056000吧。所以应该是[1000000053000,
    &nbsp;&nbsp;&nbsp; 1000000056000)是一个窗口吧。
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 忝忝向仧 <153488125@qq.com&amp;gt; 于2020年4月4日周六 下午6:16写道:
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; &amp;gt; 下发新的?
    &nbsp;&nbsp;&nbsp; &amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; 4是一个kafka的source,3是另外一个kafka的source.
    &nbsp;&nbsp;&nbsp; &amp;gt; 如果按照3秒的一个窗口
    &nbsp;&nbsp;&nbsp; &amp;gt; watermark触发窗口的条件是watermark_time&amp;amp;gt;=window_endtime
    &nbsp;&nbsp;&nbsp; &amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; 也就是说[55000,57000)应该是一个窗口的.
    &nbsp;&nbsp;&nbsp; &amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; 我是这么理解的,但是结果56000后就输出了
    &nbsp;&nbsp;&nbsp; &amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; currentTimeStamp:&amp;amp;nbsp;1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
    &nbsp;&nbsp;&nbsp; &amp;gt; 4&amp;amp;gt; (1,tom1,1000000055000)
    &nbsp;&nbsp;&nbsp; &amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; currentTimeStamp:&amp;amp;nbsp;1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
    &nbsp;&nbsp;&nbsp; &amp;gt; 4&amp;amp;gt; (1,tom2,1000000056000)
    &nbsp;&nbsp;&nbsp; &amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; currentTimeStamp:&amp;amp;nbsp;1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
    &nbsp;&nbsp;&nbsp; &amp;gt; 3&amp;amp;gt; (1,jerry1,1000000055000)
    &nbsp;&nbsp;&nbsp; &amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; currentTimeStamp:&amp;amp;nbsp;1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
    &nbsp;&nbsp;&nbsp; &amp;gt; 3&amp;amp;gt; (1,jerry2,1000000056000)
    &nbsp;&nbsp;&nbsp; &amp;gt; 2&amp;amp;gt; tom1=jerry1
    &nbsp;&nbsp;&nbsp; &amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; ------------------&amp;amp;nbsp;原始邮件&amp;amp;nbsp;------------------
    &nbsp;&nbsp;&nbsp; &amp;gt; 发件人:&amp;amp;nbsp;"lee.roval"<lee.roval@gmail.com&amp;amp;gt;;
    &nbsp;&nbsp;&nbsp; &amp;gt; 发送时间:&amp;amp;nbsp;2020年4月4日(星期六) 晚上6:10
    &nbsp;&nbsp;&nbsp; &amp;gt; 收件人:&amp;amp;nbsp;"user-zh@flink.apache.org"<user-zh@flink.apache.org&amp;amp;gt;;
    &nbsp;&nbsp;&nbsp; &amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; 主题:&amp;amp;nbsp;Re: Flink双流Join问题
    &nbsp;&nbsp;&nbsp; &amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; 56000后不是下发新的watermark了嘛
    &nbsp;&nbsp;&nbsp; &amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; 在 2020/4/4 下午5:57,“忝忝向仧”<153488125@qq.com&amp;amp;gt; 写入:
    &nbsp;&nbsp;&nbsp; &amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 各位好:&amp;amp;amp;nbsp; &amp;amp;amp;nbsp; &amp;amp;amp;nbsp; &amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; Flink双流Join遇到一个问题,能否解释下,谢谢.
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp; &amp;amp;amp;nbsp; &amp;amp;amp;nbsp; &amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; ds1和ds2分别读取kafka两个流数据,使用event time和watermark特性,3s的一个翻滚窗口,定义如下:
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp; &amp;amp;amp;nbsp; &amp;amp;amp;nbsp; &amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; 最后,join输出的时候,为什么触发窗口的数据第二条就触发了?
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp; &amp;amp;amp;nbsp; &amp;amp;amp;nbsp; &amp;amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; 按照水印的触发条件应该是watermark_time&amp;amp;amp;gt;=window_endtime.那么,这里应该是1000000057000这条数据来了后才会触发,但是结果却是56000就触发了.为什么?
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 定义的代码如下:
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; DataStream<String&amp;amp;amp;gt; stream1 = env
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; .addSource(new FlinkKafkaConsumer09<String&amp;amp;amp;gt;("stream1", new
    &nbsp;&nbsp;&nbsp; &amp;gt; SimpleStringSchema(), properties).setStartFromLatest())
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; .assignTimestampsAndWatermarks(
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; new AssignerWithPeriodicWatermarks<String&amp;amp;amp;gt;() {
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; long currentTimeStamp = 0L;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; long maxDelayAllowed = 0L;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; long currentWaterMark;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; @Nullable
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; @Override
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; public Watermark getCurrentWatermark() {
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; currentWaterMark = currentTimeStamp-maxDelayAllowed;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; return new Watermark(currentWaterMark);
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; }
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; @Override
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; public long extractTimestamp(String s, long l) {
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; String[] arr= s.split(" ");
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; long timeStamp = Long.parseLong(arr[2]);
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; currentTimeStamp = Math.max(timeStamp, currentTimeStamp);
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; System.out.println("currentTimeStamp: " +&amp;amp;nbsp; currentTimeStamp +",Key:" +
    &nbsp;&nbsp;&nbsp; &amp;gt; arr[0] + ",EventTime:" + timeStamp + ",前一条数据的水位线:" + currentWaterMark);
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; return timeStamp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; }
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; }
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; );
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; DataStream<Tuple3<String,String,String&amp;amp;amp;gt;&amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; ds1 = stream1.map(new MapFunction<String,
    &nbsp;&nbsp;&nbsp; &amp;gt; Tuple3<String,String,String&amp;amp;amp;gt;&amp;amp;amp;gt;() {
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; @Override
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; public Tuple3<String,
    &nbsp;&nbsp;&nbsp; &amp;gt; String,String&amp;amp;amp;gt; map(String s1) throws Exception {
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; String[] arr = s1.split(" ");
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; return
    &nbsp;&nbsp;&nbsp; &amp;gt; Tuple3.of(arr[0],arr[1],arr[2]);
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; });
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; ds1.print();
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; DataStream<String&amp;amp;amp;gt; stream2 = env
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; .addSource(new FlinkKafkaConsumer09<String&amp;amp;amp;gt;("stream2", new
    &nbsp;&nbsp;&nbsp; &amp;gt; SimpleStringSchema(), properties).setStartFromLatest())
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; .assignTimestampsAndWatermarks(
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; new AssignerWithPeriodicWatermarks<String&amp;amp;amp;gt;() {
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; long currentTimeStamp = 0L;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; long maxDelayAllowed = 0L;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; long currentWaterMark;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; @Nullable
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; @Override
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; public Watermark getCurrentWatermark() {
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; currentWaterMark = currentTimeStamp-maxDelayAllowed;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; return new Watermark(currentWaterMark);
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; }
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; @Override
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; public long extractTimestamp(String s, long l) {
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; String[] arr= s.split(" ");
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; long timeStamp = Long.parseLong(arr[2]);
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; currentTimeStamp = Math.max(timeStamp, currentTimeStamp);
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; System.out.println("currentTimeStamp: " +&amp;amp;nbsp; currentTimeStamp +",Key:" +
    &nbsp;&nbsp;&nbsp; &amp;gt; arr[0] + ",EventTime:" + timeStamp + ",前一条数据的水位线:" + currentWaterMark);
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; return timeStamp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; }
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; }
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; );
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; DataStream<Tuple3<String,String,String&amp;amp;amp;gt;&amp;amp;amp;gt;
    &nbsp;&nbsp;&nbsp; &amp;gt; ds2 =stream2.map(new MapFunction<String,
    &nbsp;&nbsp;&nbsp; &amp;gt; Tuple3<String,String,String&amp;amp;amp;gt;&amp;amp;amp;gt;() {
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; @Override
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; public
    &nbsp;&nbsp;&nbsp; &amp;gt; Tuple3<String,String,String&amp;amp;amp;gt; map(String s2) throws Exception {
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; String
    &nbsp;&nbsp;&nbsp; &amp;gt; [] arr = s2.split(" ");
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; return
    &nbsp;&nbsp;&nbsp; &amp;gt; Tuple3.of(arr[0],arr[1],arr[2]);
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; });
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; ds2.print();
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; ds1.join(ds2).where(new KeySelector<Tuple3<String,
    &nbsp;&nbsp;&nbsp; &amp;gt; String,String&amp;amp;amp;gt;,String&amp;amp;amp;gt;() {
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; @Override
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; public String
    &nbsp;&nbsp;&nbsp; &amp;gt; getKey(Tuple3<String, String,String&amp;amp;amp;gt; value) throws Exception {
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; return
    &nbsp;&nbsp;&nbsp; &amp;gt; value.f0;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }).equalTo(new KeySelector<Tuple3<String, String
    &nbsp;&nbsp;&nbsp; &amp;gt; ,String&amp;amp;amp;gt;, String&amp;amp;amp;gt;() {
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; @Override
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; public String
    &nbsp;&nbsp;&nbsp; &amp;gt; getKey(Tuple3<String, String,String&amp;amp;amp;gt; value) throws Exception {
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; return
    &nbsp;&nbsp;&nbsp; &amp;gt; value.f0;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; })
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; .window(TumblingEventTimeWindows.of(Time.seconds(3)))
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; .apply(new JoinFunction<Tuple3<String,
    &nbsp;&nbsp;&nbsp; &amp;gt; String,String&amp;amp;amp;gt;, Tuple3<String, String,String&amp;amp;amp;gt;,
    &nbsp;&nbsp;&nbsp; &amp;gt; String&amp;amp;amp;gt;() {
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; @Override
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; public String
    &nbsp;&nbsp;&nbsp; &amp;gt; join(Tuple3<String, String,String&amp;amp;amp;gt; value1, Tuple3<String,
    &nbsp;&nbsp;&nbsp; &amp;gt; String,String&amp;amp;amp;gt; value2) throws Exception {
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; return
    &nbsp;&nbsp;&nbsp; &amp;gt; value1.f1 + "=" + value2.f1;
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }).print();
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 结果如下:
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;gt; 1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 4&amp;amp;amp;gt; (1,tom1,1000000055000)
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;gt; 1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 4&amp;amp;amp;gt; (1,tom2,1000000056000)
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;gt; 1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 3&amp;amp;amp;gt; (1,jerry1,1000000055000)
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; currentTimeStamp:
    &nbsp;&nbsp;&nbsp; &amp;gt; 1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 3&amp;amp;amp;gt; (1,jerry2,1000000056000)
    &nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 2&amp;amp;amp;gt; tom1=jerry1
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; -- 
    &nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp; Benchao Li
    &nbsp;&nbsp;&nbsp; School of Electronics Engineering and Computer Science, Peking University
    &nbsp;&nbsp;&nbsp; Tel:+86-15650713730
    &nbsp;&nbsp;&nbsp; Email: libenchao@gmail.com; libenchao@pku.edu.cn

回复: 回复: Flink双流Join问题

Posted by 忝忝向仧 <15...@qq.com>.
额,你的意思是滚动3秒的窗口开始和结束应该是
1000000055000 % 3 得出结果再拿到[start,end).
比如1000000055000 % 3 的结果是1000000053000,那么窗口是[1000000053000,1000000056000)
是这么理解吧


------------------&nbsp;原始邮件&nbsp;------------------
发件人:&nbsp;"lee.roval"<lee.roval@gmail.com&gt;;
发送时间:&nbsp;2020年4月4日(星期六) 晚上6:25
收件人:&nbsp;"user-zh@flink.apache.org"<user-zh@flink.apache.org&gt;;

主题:&nbsp;Re: 回复: Flink双流Join问题



55000的窗口分配,是对windowSize 求模然后拿到start 和 end。 不是从你首条记录开始算。

在 2020/4/4 下午6:23,“忝忝向仧”<153488125@qq.com&gt; 写入:

&nbsp;&nbsp;&nbsp; 对,我只是回复把前面那串省略了,没写.
&nbsp;&nbsp;&nbsp; [1000000053000,1000000056000),为什么是1000000053000开始?
&nbsp;&nbsp;&nbsp; 我第一条输入的是
&nbsp;&nbsp;&nbsp; 1,tom1,1000000055000
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; ------------------&amp;nbsp;原始邮件&amp;nbsp;------------------
&nbsp;&nbsp;&nbsp; 发件人:&amp;nbsp;"libenchao"<libenchao@gmail.com&amp;gt;;
&nbsp;&nbsp;&nbsp; 发送时间:&amp;nbsp;2020年4月4日(星期六) 晚上6:20
&nbsp;&nbsp;&nbsp; 收件人:&amp;nbsp;"user-zh"<user-zh@flink.apache.org&amp;gt;;
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 主题:&amp;nbsp;Re: Flink双流Join问题
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 你的watermark不是56000,而是1000000056000吧。所以应该是[1000000053000,
&nbsp;&nbsp;&nbsp; 1000000056000)是一个窗口吧。
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 忝忝向仧 <153488125@qq.com&amp;gt; 于2020年4月4日周六 下午6:16写道:
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; &amp;gt; 下发新的?
&nbsp;&nbsp;&nbsp; &amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; 4是一个kafka的source,3是另外一个kafka的source.
&nbsp;&nbsp;&nbsp; &amp;gt; 如果按照3秒的一个窗口
&nbsp;&nbsp;&nbsp; &amp;gt; watermark触发窗口的条件是watermark_time&amp;amp;gt;=window_endtime
&nbsp;&nbsp;&nbsp; &amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; 也就是说[55000,57000)应该是一个窗口的.
&nbsp;&nbsp;&nbsp; &amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; 我是这么理解的,但是结果56000后就输出了
&nbsp;&nbsp;&nbsp; &amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; currentTimeStamp:&amp;amp;nbsp;1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
&nbsp;&nbsp;&nbsp; &amp;gt; 4&amp;amp;gt; (1,tom1,1000000055000)
&nbsp;&nbsp;&nbsp; &amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; currentTimeStamp:&amp;amp;nbsp;1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
&nbsp;&nbsp;&nbsp; &amp;gt; 4&amp;amp;gt; (1,tom2,1000000056000)
&nbsp;&nbsp;&nbsp; &amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; currentTimeStamp:&amp;amp;nbsp;1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
&nbsp;&nbsp;&nbsp; &amp;gt; 3&amp;amp;gt; (1,jerry1,1000000055000)
&nbsp;&nbsp;&nbsp; &amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; currentTimeStamp:&amp;amp;nbsp;1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
&nbsp;&nbsp;&nbsp; &amp;gt; 3&amp;amp;gt; (1,jerry2,1000000056000)
&nbsp;&nbsp;&nbsp; &amp;gt; 2&amp;amp;gt; tom1=jerry1
&nbsp;&nbsp;&nbsp; &amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; ------------------&amp;amp;nbsp;原始邮件&amp;amp;nbsp;------------------
&nbsp;&nbsp;&nbsp; &amp;gt; 发件人:&amp;amp;nbsp;"lee.roval"<lee.roval@gmail.com&amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;gt; 发送时间:&amp;amp;nbsp;2020年4月4日(星期六) 晚上6:10
&nbsp;&nbsp;&nbsp; &amp;gt; 收件人:&amp;amp;nbsp;"user-zh@flink.apache.org"<user-zh@flink.apache.org&amp;amp;gt;;
&nbsp;&nbsp;&nbsp; &amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; 主题:&amp;amp;nbsp;Re: Flink双流Join问题
&nbsp;&nbsp;&nbsp; &amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; 56000后不是下发新的watermark了嘛
&nbsp;&nbsp;&nbsp; &amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; 在 2020/4/4 下午5:57,“忝忝向仧”<153488125@qq.com&amp;amp;gt; 写入:
&nbsp;&nbsp;&nbsp; &amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 各位好:&amp;amp;amp;nbsp; &amp;amp;amp;nbsp; &amp;amp;amp;nbsp; &amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; Flink双流Join遇到一个问题,能否解释下,谢谢.
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp; &amp;amp;amp;nbsp; &amp;amp;amp;nbsp; &amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; ds1和ds2分别读取kafka两个流数据,使用event time和watermark特性,3s的一个翻滚窗口,定义如下:
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp; &amp;amp;amp;nbsp; &amp;amp;amp;nbsp; &amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; 最后,join输出的时候,为什么触发窗口的数据第二条就触发了?
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;amp;nbsp; &amp;amp;amp;nbsp; &amp;amp;amp;nbsp; &amp;amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; 按照水印的触发条件应该是watermark_time&amp;amp;amp;gt;=window_endtime.那么,这里应该是1000000057000这条数据来了后才会触发,但是结果却是56000就触发了.为什么?
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 定义的代码如下:
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; DataStream<String&amp;amp;amp;gt; stream1 = env
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; .addSource(new FlinkKafkaConsumer09<String&amp;amp;amp;gt;("stream1", new
&nbsp;&nbsp;&nbsp; &amp;gt; SimpleStringSchema(), properties).setStartFromLatest())
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; .assignTimestampsAndWatermarks(
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; new AssignerWithPeriodicWatermarks<String&amp;amp;amp;gt;() {
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; long currentTimeStamp = 0L;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; long maxDelayAllowed = 0L;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; long currentWaterMark;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; @Nullable
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; @Override
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; public Watermark getCurrentWatermark() {
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; currentWaterMark = currentTimeStamp-maxDelayAllowed;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; return new Watermark(currentWaterMark);
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; @Override
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; public long extractTimestamp(String s, long l) {
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; String[] arr= s.split(" ");
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; long timeStamp = Long.parseLong(arr[2]);
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; currentTimeStamp = Math.max(timeStamp, currentTimeStamp);
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; System.out.println("currentTimeStamp: " +&amp;amp;nbsp; currentTimeStamp +",Key:" +
&nbsp;&nbsp;&nbsp; &amp;gt; arr[0] + ",EventTime:" + timeStamp + ",前一条数据的水位线:" + currentWaterMark);
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; return timeStamp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; );
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; DataStream<Tuple3<String,String,String&amp;amp;amp;gt;&amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; ds1 = stream1.map(new MapFunction<String,
&nbsp;&nbsp;&nbsp; &amp;gt; Tuple3<String,String,String&amp;amp;amp;gt;&amp;amp;amp;gt;() {
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; @Override
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; public Tuple3<String,
&nbsp;&nbsp;&nbsp; &amp;gt; String,String&amp;amp;amp;gt; map(String s1) throws Exception {
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; String[] arr = s1.split(" ");
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; return
&nbsp;&nbsp;&nbsp; &amp;gt; Tuple3.of(arr[0],arr[1],arr[2]);
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; });
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; ds1.print();
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; DataStream<String&amp;amp;amp;gt; stream2 = env
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; .addSource(new FlinkKafkaConsumer09<String&amp;amp;amp;gt;("stream2", new
&nbsp;&nbsp;&nbsp; &amp;gt; SimpleStringSchema(), properties).setStartFromLatest())
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; .assignTimestampsAndWatermarks(
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; new AssignerWithPeriodicWatermarks<String&amp;amp;amp;gt;() {
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; long currentTimeStamp = 0L;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; long maxDelayAllowed = 0L;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; long currentWaterMark;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; @Nullable
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; @Override
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; public Watermark getCurrentWatermark() {
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; currentWaterMark = currentTimeStamp-maxDelayAllowed;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; return new Watermark(currentWaterMark);
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; @Override
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; public long extractTimestamp(String s, long l) {
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; String[] arr= s.split(" ");
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; long timeStamp = Long.parseLong(arr[2]);
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; currentTimeStamp = Math.max(timeStamp, currentTimeStamp);
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; System.out.println("currentTimeStamp: " +&amp;amp;nbsp; currentTimeStamp +",Key:" +
&nbsp;&nbsp;&nbsp; &amp;gt; arr[0] + ",EventTime:" + timeStamp + ",前一条数据的水位线:" + currentWaterMark);
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; return timeStamp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; }
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; );
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; DataStream<Tuple3<String,String,String&amp;amp;amp;gt;&amp;amp;amp;gt;
&nbsp;&nbsp;&nbsp; &amp;gt; ds2 =stream2.map(new MapFunction<String,
&nbsp;&nbsp;&nbsp; &amp;gt; Tuple3<String,String,String&amp;amp;amp;gt;&amp;amp;amp;gt;() {
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; @Override
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; public
&nbsp;&nbsp;&nbsp; &amp;gt; Tuple3<String,String,String&amp;amp;amp;gt; map(String s2) throws Exception {
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; String
&nbsp;&nbsp;&nbsp; &amp;gt; [] arr = s2.split(" ");
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; return
&nbsp;&nbsp;&nbsp; &amp;gt; Tuple3.of(arr[0],arr[1],arr[2]);
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; });
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; ds2.print();
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; ds1.join(ds2).where(new KeySelector<Tuple3<String,
&nbsp;&nbsp;&nbsp; &amp;gt; String,String&amp;amp;amp;gt;,String&amp;amp;amp;gt;() {
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; @Override
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; public String
&nbsp;&nbsp;&nbsp; &amp;gt; getKey(Tuple3<String, String,String&amp;amp;amp;gt; value) throws Exception {
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; return
&nbsp;&nbsp;&nbsp; &amp;gt; value.f0;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }).equalTo(new KeySelector<Tuple3<String, String
&nbsp;&nbsp;&nbsp; &amp;gt; ,String&amp;amp;amp;gt;, String&amp;amp;amp;gt;() {
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; @Override
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; public String
&nbsp;&nbsp;&nbsp; &amp;gt; getKey(Tuple3<String, String,String&amp;amp;amp;gt; value) throws Exception {
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; return
&nbsp;&nbsp;&nbsp; &amp;gt; value.f0;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; })
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; .window(TumblingEventTimeWindows.of(Time.seconds(3)))
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; .apply(new JoinFunction<Tuple3<String,
&nbsp;&nbsp;&nbsp; &amp;gt; String,String&amp;amp;amp;gt;, Tuple3<String, String,String&amp;amp;amp;gt;,
&nbsp;&nbsp;&nbsp; &amp;gt; String&amp;amp;amp;gt;() {
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; @Override
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; public String
&nbsp;&nbsp;&nbsp; &amp;gt; join(Tuple3<String, String,String&amp;amp;amp;gt; value1, Tuple3<String,
&nbsp;&nbsp;&nbsp; &amp;gt; String,String&amp;amp;amp;gt; value2) throws Exception {
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; return
&nbsp;&nbsp;&nbsp; &amp;gt; value1.f1 + "=" + value2.f1;
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; }).print();
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 结果如下:
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;gt; 1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 4&amp;amp;amp;gt; (1,tom1,1000000055000)
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;gt; 1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 4&amp;amp;amp;gt; (1,tom2,1000000056000)
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;gt; 1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 3&amp;amp;amp;gt; (1,jerry1,1000000055000)
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; currentTimeStamp:
&nbsp;&nbsp;&nbsp; &amp;gt; 1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 3&amp;amp;amp;gt; (1,jerry2,1000000056000)
&nbsp;&nbsp;&nbsp; &amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 2&amp;amp;amp;gt; tom1=jerry1
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; -- 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; Benchao Li
&nbsp;&nbsp;&nbsp; School of Electronics Engineering and Computer Science, Peking University
&nbsp;&nbsp;&nbsp; Tel:+86-15650713730
&nbsp;&nbsp;&nbsp; Email: libenchao@gmail.com; libenchao@pku.edu.cn

Re: 回复: Flink双流Join问题

Posted by Djeng Lee <le...@gmail.com>.
55000的窗口分配,是对windowSize 求模然后拿到start 和 end。 不是从你首条记录开始算。

在 2020/4/4 下午6:23,“忝忝向仧”<15...@qq.com> 写入:

    对,我只是回复把前面那串省略了,没写.
    [1000000053000,1000000056000),为什么是1000000053000开始?
    我第一条输入的是
    1,tom1,1000000055000
    
    
    ------------------&nbsp;原始邮件&nbsp;------------------
    发件人:&nbsp;"libenchao"<libenchao@gmail.com&gt;;
    发送时间:&nbsp;2020年4月4日(星期六) 晚上6:20
    收件人:&nbsp;"user-zh"<user-zh@flink.apache.org&gt;;
    
    主题:&nbsp;Re: Flink双流Join问题
    
    
    
    你的watermark不是56000,而是1000000056000吧。所以应该是[1000000053000,
    1000000056000)是一个窗口吧。
    
    忝忝向仧 <153488125@qq.com&gt; 于2020年4月4日周六 下午6:16写道:
    
    &gt; 下发新的?
    &gt;
    &gt;
    &gt; 4是一个kafka的source,3是另外一个kafka的source.
    &gt; 如果按照3秒的一个窗口
    &gt; watermark触发窗口的条件是watermark_time&amp;gt;=window_endtime
    &gt;
    &gt;
    &gt; 也就是说[55000,57000)应该是一个窗口的.
    &gt;
    &gt;
    &gt; 我是这么理解的,但是结果56000后就输出了
    &gt;
    &gt;
    &gt;
    &gt; currentTimeStamp:&amp;nbsp;1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
    &gt; 4&amp;gt; (1,tom1,1000000055000)
    &gt;
    &gt; currentTimeStamp:&amp;nbsp;1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
    &gt; 4&amp;gt; (1,tom2,1000000056000)
    &gt;
    &gt; currentTimeStamp:&amp;nbsp;1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
    &gt; 3&amp;gt; (1,jerry1,1000000055000)
    &gt;
    &gt; currentTimeStamp:&amp;nbsp;1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
    &gt; 3&amp;gt; (1,jerry2,1000000056000)
    &gt; 2&amp;gt; tom1=jerry1
    &gt;
    &gt;
    &gt;
    &gt;
    &gt;
    &gt;
    &gt;
    &gt; ------------------&amp;nbsp;原始邮件&amp;nbsp;------------------
    &gt; 发件人:&amp;nbsp;"lee.roval"<lee.roval@gmail.com&amp;gt;;
    &gt; 发送时间:&amp;nbsp;2020年4月4日(星期六) 晚上6:10
    &gt; 收件人:&amp;nbsp;"user-zh@flink.apache.org"<user-zh@flink.apache.org&amp;gt;;
    &gt;
    &gt; 主题:&amp;nbsp;Re: Flink双流Join问题
    &gt;
    &gt;
    &gt;
    &gt; 56000后不是下发新的watermark了嘛
    &gt;
    &gt; 在 2020/4/4 下午5:57,“忝忝向仧”<153488125@qq.com&amp;gt; 写入:
    &gt;
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 各位好:&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;
    &gt; Flink双流Join遇到一个问题,能否解释下,谢谢.
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;
    &gt; ds1和ds2分别读取kafka两个流数据,使用event time和watermark特性,3s的一个翻滚窗口,定义如下:
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;
    &gt; 最后,join输出的时候,为什么触发窗口的数据第二条就触发了?
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;
    &gt; 按照水印的触发条件应该是watermark_time&amp;amp;gt;=window_endtime.那么,这里应该是1000000057000这条数据来了后才会触发,但是结果却是56000就触发了.为什么?
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 定义的代码如下:
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; DataStream<String&amp;amp;gt; stream1 = env
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; .addSource(new FlinkKafkaConsumer09<String&amp;amp;gt;("stream1", new
    &gt; SimpleStringSchema(), properties).setStartFromLatest())
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; .assignTimestampsAndWatermarks(
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; new AssignerWithPeriodicWatermarks<String&amp;amp;gt;() {
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; long currentTimeStamp = 0L;
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; long maxDelayAllowed = 0L;
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; long currentWaterMark;
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; @Nullable
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; @Override
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; public Watermark getCurrentWatermark() {
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; currentWaterMark = currentTimeStamp-maxDelayAllowed;
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; return new Watermark(currentWaterMark);
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; }
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; @Override
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; public long extractTimestamp(String s, long l) {
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; String[] arr= s.split(" ");
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; long timeStamp = Long.parseLong(arr[2]);
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; currentTimeStamp = Math.max(timeStamp, currentTimeStamp);
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; System.out.println("currentTimeStamp: " +&amp;nbsp; currentTimeStamp +",Key:" +
    &gt; arr[0] + ",EventTime:" + timeStamp + ",前一条数据的水位线:" + currentWaterMark);
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; return timeStamp;
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; }
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; }
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; DataStream<Tuple3<String,String,String&amp;amp;gt;&amp;amp;gt;
    &gt; ds1 = stream1.map(new MapFunction<String,
    &gt; Tuple3<String,String,String&amp;amp;gt;&amp;amp;gt;() {
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Tuple3<String,
    &gt; String,String&amp;amp;gt; map(String s1) throws Exception {
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; String[] arr = s1.split(" ");
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return
    &gt; Tuple3.of(arr[0],arr[1],arr[2]);
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; });
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; ds1.print();
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; DataStream<String&amp;amp;gt; stream2 = env
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; .addSource(new FlinkKafkaConsumer09<String&amp;amp;gt;("stream2", new
    &gt; SimpleStringSchema(), properties).setStartFromLatest())
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; .assignTimestampsAndWatermarks(
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; new AssignerWithPeriodicWatermarks<String&amp;amp;gt;() {
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; long currentTimeStamp = 0L;
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; long maxDelayAllowed = 0L;
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; long currentWaterMark;
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; @Nullable
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; @Override
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; public Watermark getCurrentWatermark() {
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; currentWaterMark = currentTimeStamp-maxDelayAllowed;
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; return new Watermark(currentWaterMark);
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; }
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; @Override
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; public long extractTimestamp(String s, long l) {
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; String[] arr= s.split(" ");
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; long timeStamp = Long.parseLong(arr[2]);
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; currentTimeStamp = Math.max(timeStamp, currentTimeStamp);
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; System.out.println("currentTimeStamp: " +&amp;nbsp; currentTimeStamp +",Key:" +
    &gt; arr[0] + ",EventTime:" + timeStamp + ",前一条数据的水位线:" + currentWaterMark);
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; return timeStamp;
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; }
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; }
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; DataStream<Tuple3<String,String,String&amp;amp;gt;&amp;amp;gt;
    &gt; ds2 =stream2.map(new MapFunction<String,
    &gt; Tuple3<String,String,String&amp;amp;gt;&amp;amp;gt;() {
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public
    &gt; Tuple3<String,String,String&amp;amp;gt; map(String s2) throws Exception {
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String
    &gt; [] arr = s2.split(" ");
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return
    &gt; Tuple3.of(arr[0],arr[1],arr[2]);
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; });
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; ds2.print();
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; ds1.join(ds2).where(new KeySelector<Tuple3<String,
    &gt; String,String&amp;amp;gt;,String&amp;amp;gt;() {
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public String
    &gt; getKey(Tuple3<String, String,String&amp;amp;gt; value) throws Exception {
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return
    &gt; value.f0;
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; }).equalTo(new KeySelector<Tuple3<String, String
    &gt; ,String&amp;amp;gt;, String&amp;amp;gt;() {
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public String
    &gt; getKey(Tuple3<String, String,String&amp;amp;gt; value) throws Exception {
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return
    &gt; value.f0;
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; })
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; .window(TumblingEventTimeWindows.of(Time.seconds(3)))
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; .apply(new JoinFunction<Tuple3<String,
    &gt; String,String&amp;amp;gt;, Tuple3<String, String,String&amp;amp;gt;,
    &gt; String&amp;amp;gt;() {
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public String
    &gt; join(Tuple3<String, String,String&amp;amp;gt; value1, Tuple3<String,
    &gt; String,String&amp;amp;gt; value2) throws Exception {
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return
    &gt; value1.f1 + "=" + value2.f1;
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; }).print();
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 结果如下:
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; currentTimeStamp:
    &gt; 1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;amp;gt; (1,tom1,1000000055000)
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; currentTimeStamp:
    &gt; 1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;amp;gt; (1,tom2,1000000056000)
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; currentTimeStamp:
    &gt; 1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;amp;gt; (1,jerry1,1000000055000)
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; currentTimeStamp:
    &gt; 1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;amp;gt; (1,jerry2,1000000056000)
    &gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;amp;gt; tom1=jerry1
    
    
    
    -- 
    
    Benchao Li
    School of Electronics Engineering and Computer Science, Peking University
    Tel:+86-15650713730
    Email: libenchao@gmail.com; libenchao@pku.edu.cn

回复: Flink双流Join问题

Posted by 忝忝向仧 <15...@qq.com>.
对,我只是回复把前面那串省略了,没写.
[1000000053000,1000000056000),为什么是1000000053000开始?
我第一条输入的是
1,tom1,1000000055000


------------------&nbsp;原始邮件&nbsp;------------------
发件人:&nbsp;"libenchao"<libenchao@gmail.com&gt;;
发送时间:&nbsp;2020年4月4日(星期六) 晚上6:20
收件人:&nbsp;"user-zh"<user-zh@flink.apache.org&gt;;

主题:&nbsp;Re: Flink双流Join问题



你的watermark不是56000,而是1000000056000吧。所以应该是[1000000053000,
1000000056000)是一个窗口吧。

忝忝向仧 <153488125@qq.com&gt; 于2020年4月4日周六 下午6:16写道:

&gt; 下发新的?
&gt;
&gt;
&gt; 4是一个kafka的source,3是另外一个kafka的source.
&gt; 如果按照3秒的一个窗口
&gt; watermark触发窗口的条件是watermark_time&amp;gt;=window_endtime
&gt;
&gt;
&gt; 也就是说[55000,57000)应该是一个窗口的.
&gt;
&gt;
&gt; 我是这么理解的,但是结果56000后就输出了
&gt;
&gt;
&gt;
&gt; currentTimeStamp:&amp;nbsp;1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
&gt; 4&amp;gt; (1,tom1,1000000055000)
&gt;
&gt; currentTimeStamp:&amp;nbsp;1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
&gt; 4&amp;gt; (1,tom2,1000000056000)
&gt;
&gt; currentTimeStamp:&amp;nbsp;1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
&gt; 3&amp;gt; (1,jerry1,1000000055000)
&gt;
&gt; currentTimeStamp:&amp;nbsp;1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
&gt; 3&amp;gt; (1,jerry2,1000000056000)
&gt; 2&amp;gt; tom1=jerry1
&gt;
&gt;
&gt;
&gt;
&gt;
&gt;
&gt;
&gt; ------------------&amp;nbsp;原始邮件&amp;nbsp;------------------
&gt; 发件人:&amp;nbsp;"lee.roval"<lee.roval@gmail.com&amp;gt;;
&gt; 发送时间:&amp;nbsp;2020年4月4日(星期六) 晚上6:10
&gt; 收件人:&amp;nbsp;"user-zh@flink.apache.org"<user-zh@flink.apache.org&amp;gt;;
&gt;
&gt; 主题:&amp;nbsp;Re: Flink双流Join问题
&gt;
&gt;
&gt;
&gt; 56000后不是下发新的watermark了嘛
&gt;
&gt; 在 2020/4/4 下午5:57,“忝忝向仧”<153488125@qq.com&amp;gt; 写入:
&gt;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 各位好:&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;
&gt; Flink双流Join遇到一个问题,能否解释下,谢谢.
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;
&gt; ds1和ds2分别读取kafka两个流数据,使用event time和watermark特性,3s的一个翻滚窗口,定义如下:
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;
&gt; 最后,join输出的时候,为什么触发窗口的数据第二条就触发了?
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;
&gt; 按照水印的触发条件应该是watermark_time&amp;amp;gt;=window_endtime.那么,这里应该是1000000057000这条数据来了后才会触发,但是结果却是56000就触发了.为什么?
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 定义的代码如下:
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; DataStream<String&amp;amp;gt; stream1 = env
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; .addSource(new FlinkKafkaConsumer09<String&amp;amp;gt;("stream1", new
&gt; SimpleStringSchema(), properties).setStartFromLatest())
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; .assignTimestampsAndWatermarks(
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; new AssignerWithPeriodicWatermarks<String&amp;amp;gt;() {
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; long currentTimeStamp = 0L;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; long maxDelayAllowed = 0L;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; long currentWaterMark;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; @Nullable
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; @Override
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; public Watermark getCurrentWatermark() {
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; currentWaterMark = currentTimeStamp-maxDelayAllowed;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; return new Watermark(currentWaterMark);
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; }
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; @Override
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; public long extractTimestamp(String s, long l) {
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; String[] arr= s.split(" ");
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; long timeStamp = Long.parseLong(arr[2]);
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; currentTimeStamp = Math.max(timeStamp, currentTimeStamp);
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; System.out.println("currentTimeStamp: " +&amp;nbsp; currentTimeStamp +",Key:" +
&gt; arr[0] + ",EventTime:" + timeStamp + ",前一条数据的水位线:" + currentWaterMark);
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; return timeStamp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; }
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; }
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; DataStream<Tuple3<String,String,String&amp;amp;gt;&amp;amp;gt;
&gt; ds1 = stream1.map(new MapFunction<String,
&gt; Tuple3<String,String,String&amp;amp;gt;&amp;amp;gt;() {
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Tuple3<String,
&gt; String,String&amp;amp;gt; map(String s1) throws Exception {
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; String[] arr = s1.split(" ");
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return
&gt; Tuple3.of(arr[0],arr[1],arr[2]);
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; });
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; ds1.print();
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; DataStream<String&amp;amp;gt; stream2 = env
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; .addSource(new FlinkKafkaConsumer09<String&amp;amp;gt;("stream2", new
&gt; SimpleStringSchema(), properties).setStartFromLatest())
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; .assignTimestampsAndWatermarks(
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; new AssignerWithPeriodicWatermarks<String&amp;amp;gt;() {
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; long currentTimeStamp = 0L;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; long maxDelayAllowed = 0L;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; long currentWaterMark;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; @Nullable
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; @Override
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; public Watermark getCurrentWatermark() {
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; currentWaterMark = currentTimeStamp-maxDelayAllowed;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; return new Watermark(currentWaterMark);
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; }
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; @Override
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; public long extractTimestamp(String s, long l) {
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; String[] arr= s.split(" ");
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; long timeStamp = Long.parseLong(arr[2]);
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; currentTimeStamp = Math.max(timeStamp, currentTimeStamp);
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; System.out.println("currentTimeStamp: " +&amp;nbsp; currentTimeStamp +",Key:" +
&gt; arr[0] + ",EventTime:" + timeStamp + ",前一条数据的水位线:" + currentWaterMark);
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; return timeStamp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; }
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; }
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; DataStream<Tuple3<String,String,String&amp;amp;gt;&amp;amp;gt;
&gt; ds2 =stream2.map(new MapFunction<String,
&gt; Tuple3<String,String,String&amp;amp;gt;&amp;amp;gt;() {
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public
&gt; Tuple3<String,String,String&amp;amp;gt; map(String s2) throws Exception {
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String
&gt; [] arr = s2.split(" ");
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return
&gt; Tuple3.of(arr[0],arr[1],arr[2]);
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; });
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; ds2.print();
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; ds1.join(ds2).where(new KeySelector<Tuple3<String,
&gt; String,String&amp;amp;gt;,String&amp;amp;gt;() {
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public String
&gt; getKey(Tuple3<String, String,String&amp;amp;gt; value) throws Exception {
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return
&gt; value.f0;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; }).equalTo(new KeySelector<Tuple3<String, String
&gt; ,String&amp;amp;gt;, String&amp;amp;gt;() {
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public String
&gt; getKey(Tuple3<String, String,String&amp;amp;gt; value) throws Exception {
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return
&gt; value.f0;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; })
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; .window(TumblingEventTimeWindows.of(Time.seconds(3)))
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; .apply(new JoinFunction<Tuple3<String,
&gt; String,String&amp;amp;gt;, Tuple3<String, String,String&amp;amp;gt;,
&gt; String&amp;amp;gt;() {
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public String
&gt; join(Tuple3<String, String,String&amp;amp;gt; value1, Tuple3<String,
&gt; String,String&amp;amp;gt; value2) throws Exception {
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return
&gt; value1.f1 + "=" + value2.f1;
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; }).print();
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 结果如下:
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; currentTimeStamp:
&gt; 1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;amp;gt; (1,tom1,1000000055000)
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; currentTimeStamp:
&gt; 1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;amp;gt; (1,tom2,1000000056000)
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; currentTimeStamp:
&gt; 1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;amp;gt; (1,jerry1,1000000055000)
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; currentTimeStamp:
&gt; 1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;amp;gt; (1,jerry2,1000000056000)
&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;amp;gt; tom1=jerry1



-- 

Benchao Li
School of Electronics Engineering and Computer Science, Peking University
Tel:+86-15650713730
Email: libenchao@gmail.com; libenchao@pku.edu.cn

Re: Flink双流Join问题

Posted by Djeng Lee <le...@gmail.com>.
https://ci.apache.org/projects/flink/flink-docs-release-1.10/zh/dev/event_timestamps_watermarks.html


```Both timestamps and watermarks are specified as milliseconds since the Java epoch of 1970-01-01T00:00:00Z.```

看一下这个, 从0 timestamp开始切分



在 2020/4/4 下午6:20,“Benchao Li”<li...@gmail.com> 写入:

    你的watermark不是56000,而是1000000056000吧。所以应该是[1000000053000,
    1000000056000)是一个窗口吧。
    
    忝忝向仧 <15...@qq.com> 于2020年4月4日周六 下午6:16写道:
    
    > 下发新的?
    >
    >
    > 4是一个kafka的source,3是另外一个kafka的source.
    > 如果按照3秒的一个窗口
    > watermark触发窗口的条件是watermark_time&gt;=window_endtime
    >
    >
    > 也就是说[55000,57000)应该是一个窗口的.
    >
    >
    > 我是这么理解的,但是结果56000后就输出了
    >
    >
    >
    > currentTimeStamp:&nbsp;1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
    > 4&gt; (1,tom1,1000000055000)
    >
    > currentTimeStamp:&nbsp;1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
    > 4&gt; (1,tom2,1000000056000)
    >
    > currentTimeStamp:&nbsp;1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
    > 3&gt; (1,jerry1,1000000055000)
    >
    > currentTimeStamp:&nbsp;1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
    > 3&gt; (1,jerry2,1000000056000)
    > 2&gt; tom1=jerry1
    >
    >
    >
    >
    >
    >
    >
    > ------------------&nbsp;原始邮件&nbsp;------------------
    > 发件人:&nbsp;"lee.roval"<lee.roval@gmail.com&gt;;
    > 发送时间:&nbsp;2020年4月4日(星期六) 晚上6:10
    > 收件人:&nbsp;"user-zh@flink.apache.org"<user-zh@flink.apache.org&gt;;
    >
    > 主题:&nbsp;Re: Flink双流Join问题
    >
    >
    >
    > 56000后不是下发新的watermark了嘛
    >
    > 在 2020/4/4 下午5:57,“忝忝向仧”<153488125@qq.com&gt; 写入:
    >
    > &nbsp;&nbsp;&nbsp; 各位好:&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
    > Flink双流Join遇到一个问题,能否解释下,谢谢.
    > &nbsp;&nbsp;&nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
    > ds1和ds2分别读取kafka两个流数据,使用event time和watermark特性,3s的一个翻滚窗口,定义如下:
    > &nbsp;&nbsp;&nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
    > 最后,join输出的时候,为什么触发窗口的数据第二条就触发了?
    > &nbsp;&nbsp;&nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
    > 按照水印的触发条件应该是watermark_time&amp;gt;=window_endtime.那么,这里应该是1000000057000这条数据来了后才会触发,但是结果却是56000就触发了.为什么?
    > &nbsp;&nbsp;&nbsp;
    > &nbsp;&nbsp;&nbsp;
    > &nbsp;&nbsp;&nbsp;
    > &nbsp;&nbsp;&nbsp; 定义的代码如下:
    > &nbsp;&nbsp;&nbsp; DataStream<String&amp;gt; stream1 = env
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    > .addSource(new FlinkKafkaConsumer09<String&amp;gt;("stream1", new
    > SimpleStringSchema(), properties).setStartFromLatest())
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    > .assignTimestampsAndWatermarks(
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    > new AssignerWithPeriodicWatermarks<String&amp;gt;() {
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    > long currentTimeStamp = 0L;
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    > long maxDelayAllowed = 0L;
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    > long currentWaterMark;
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    > @Nullable
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    > @Override
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    > public Watermark getCurrentWatermark() {
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    > currentWaterMark = currentTimeStamp-maxDelayAllowed;
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    > return new Watermark(currentWaterMark);
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    > }
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    > @Override
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    > public long extractTimestamp(String s, long l) {
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    > String[] arr= s.split(" ");
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    > long timeStamp = Long.parseLong(arr[2]);
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    > currentTimeStamp = Math.max(timeStamp, currentTimeStamp);
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    > System.out.println("currentTimeStamp: " +&nbsp; currentTimeStamp +",Key:" +
    > arr[0] + ",EventTime:" + timeStamp + ",前一条数据的水位线:" + currentWaterMark);
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    > return timeStamp;
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    > }
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    > }
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );
    > &nbsp;&nbsp;&nbsp;
    > &nbsp;&nbsp;&nbsp; DataStream<Tuple3<String,String,String&amp;gt;&amp;gt;
    > ds1 = stream1.map(new MapFunction<String,
    > Tuple3<String,String,String&amp;gt;&amp;gt;() {
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @Override
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Tuple3<String,
    > String,String&amp;gt; map(String s1) throws Exception {
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    > String[] arr = s1.split(" ");
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return
    > Tuple3.of(arr[0],arr[1],arr[2]);
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
    > &nbsp;&nbsp;&nbsp; });
    > &nbsp;&nbsp;&nbsp;
    > &nbsp;&nbsp;&nbsp; ds1.print();
    > &nbsp;&nbsp;&nbsp; DataStream<String&amp;gt; stream2 = env
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    > .addSource(new FlinkKafkaConsumer09<String&amp;gt;("stream2", new
    > SimpleStringSchema(), properties).setStartFromLatest())
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    > .assignTimestampsAndWatermarks(
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    > new AssignerWithPeriodicWatermarks<String&amp;gt;() {
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    > long currentTimeStamp = 0L;
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    > long maxDelayAllowed = 0L;
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    > long currentWaterMark;
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    > @Nullable
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    > @Override
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    > public Watermark getCurrentWatermark() {
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    > currentWaterMark = currentTimeStamp-maxDelayAllowed;
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    > return new Watermark(currentWaterMark);
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    > }
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    > @Override
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    > public long extractTimestamp(String s, long l) {
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    > String[] arr= s.split(" ");
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    > long timeStamp = Long.parseLong(arr[2]);
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    > currentTimeStamp = Math.max(timeStamp, currentTimeStamp);
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    > System.out.println("currentTimeStamp: " +&nbsp; currentTimeStamp +",Key:" +
    > arr[0] + ",EventTime:" + timeStamp + ",前一条数据的水位线:" + currentWaterMark);
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    > return timeStamp;
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    > }
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    > }
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );
    > &nbsp;&nbsp;&nbsp;
    > &nbsp;&nbsp;&nbsp; DataStream<Tuple3<String,String,String&amp;gt;&amp;gt;
    > ds2 =stream2.map(new MapFunction<String,
    > Tuple3<String,String,String&amp;gt;&amp;gt;() {
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @Override
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public
    > Tuple3<String,String,String&amp;gt; map(String s2) throws Exception {
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String
    > [] arr = s2.split(" ");
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return
    > Tuple3.of(arr[0],arr[1],arr[2]);
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
    > &nbsp;&nbsp;&nbsp; });
    > &nbsp;&nbsp;&nbsp; ds2.print();
    > &nbsp;&nbsp;&nbsp; ds1.join(ds2).where(new KeySelector<Tuple3<String,
    > String,String&amp;gt;,String&amp;gt;() {
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @Override
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public String
    > getKey(Tuple3<String, String,String&amp;gt; value) throws Exception {
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return
    > value.f0;
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
    > &nbsp;&nbsp;&nbsp; }).equalTo(new KeySelector<Tuple3<String, String
    > ,String&amp;gt;, String&amp;gt;() {
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @Override
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public String
    > getKey(Tuple3<String, String,String&amp;gt; value) throws Exception {
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return
    > value.f0;
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
    > &nbsp;&nbsp;&nbsp; })
    > &nbsp;&nbsp;&nbsp; .window(TumblingEventTimeWindows.of(Time.seconds(3)))
    > &nbsp;&nbsp;&nbsp; .apply(new JoinFunction<Tuple3<String,
    > String,String&amp;gt;, Tuple3<String, String,String&amp;gt;,
    > String&amp;gt;() {
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @Override
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public String
    > join(Tuple3<String, String,String&amp;gt; value1, Tuple3<String,
    > String,String&amp;gt; value2) throws Exception {
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return
    > value1.f1 + "=" + value2.f1;
    > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
    > &nbsp;&nbsp;&nbsp; }).print();
    > &nbsp;&nbsp;&nbsp; 结果如下:
    > &nbsp;&nbsp;&nbsp; currentTimeStamp:
    > 1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
    > &nbsp;&nbsp;&nbsp; 4&amp;gt; (1,tom1,1000000055000)
    > &nbsp;&nbsp;&nbsp; currentTimeStamp:
    > 1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
    > &nbsp;&nbsp;&nbsp; 4&amp;gt; (1,tom2,1000000056000)
    > &nbsp;&nbsp;&nbsp; currentTimeStamp:
    > 1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
    > &nbsp;&nbsp;&nbsp; 3&amp;gt; (1,jerry1,1000000055000)
    > &nbsp;&nbsp;&nbsp; currentTimeStamp:
    > 1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
    > &nbsp;&nbsp;&nbsp; 3&amp;gt; (1,jerry2,1000000056000)
    > &nbsp;&nbsp;&nbsp; 2&amp;gt; tom1=jerry1
    
    
    
    -- 
    
    Benchao Li
    School of Electronics Engineering and Computer Science, Peking University
    Tel:+86-15650713730
    Email: libenchao@gmail.com; libenchao@pku.edu.cn
    

Re: Flink双流Join问题

Posted by Benchao Li <li...@gmail.com>.
你的watermark不是56000,而是1000000056000吧。所以应该是[1000000053000,
1000000056000)是一个窗口吧。

忝忝向仧 <15...@qq.com> 于2020年4月4日周六 下午6:16写道:

> 下发新的?
>
>
> 4是一个kafka的source,3是另外一个kafka的source.
> 如果按照3秒的一个窗口
> watermark触发窗口的条件是watermark_time&gt;=window_endtime
>
>
> 也就是说[55000,57000)应该是一个窗口的.
>
>
> 我是这么理解的,但是结果56000后就输出了
>
>
>
> currentTimeStamp:&nbsp;1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
> 4&gt; (1,tom1,1000000055000)
>
> currentTimeStamp:&nbsp;1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
> 4&gt; (1,tom2,1000000056000)
>
> currentTimeStamp:&nbsp;1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
> 3&gt; (1,jerry1,1000000055000)
>
> currentTimeStamp:&nbsp;1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
> 3&gt; (1,jerry2,1000000056000)
> 2&gt; tom1=jerry1
>
>
>
>
>
>
>
> ------------------&nbsp;原始邮件&nbsp;------------------
> 发件人:&nbsp;"lee.roval"<lee.roval@gmail.com&gt;;
> 发送时间:&nbsp;2020年4月4日(星期六) 晚上6:10
> 收件人:&nbsp;"user-zh@flink.apache.org"<user-zh@flink.apache.org&gt;;
>
> 主题:&nbsp;Re: Flink双流Join问题
>
>
>
> 56000后不是下发新的watermark了嘛
>
> 在 2020/4/4 下午5:57,“忝忝向仧”<153488125@qq.com&gt; 写入:
>
> &nbsp;&nbsp;&nbsp; 各位好:&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
> Flink双流Join遇到一个问题,能否解释下,谢谢.
> &nbsp;&nbsp;&nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
> ds1和ds2分别读取kafka两个流数据,使用event time和watermark特性,3s的一个翻滚窗口,定义如下:
> &nbsp;&nbsp;&nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
> 最后,join输出的时候,为什么触发窗口的数据第二条就触发了?
> &nbsp;&nbsp;&nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
> 按照水印的触发条件应该是watermark_time&amp;gt;=window_endtime.那么,这里应该是1000000057000这条数据来了后才会触发,但是结果却是56000就触发了.为什么?
> &nbsp;&nbsp;&nbsp;
> &nbsp;&nbsp;&nbsp;
> &nbsp;&nbsp;&nbsp;
> &nbsp;&nbsp;&nbsp; 定义的代码如下:
> &nbsp;&nbsp;&nbsp; DataStream<String&amp;gt; stream1 = env
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
> .addSource(new FlinkKafkaConsumer09<String&amp;gt;("stream1", new
> SimpleStringSchema(), properties).setStartFromLatest())
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
> .assignTimestampsAndWatermarks(
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
> new AssignerWithPeriodicWatermarks<String&amp;gt;() {
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
> long currentTimeStamp = 0L;
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
> long maxDelayAllowed = 0L;
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
> long currentWaterMark;
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
> @Nullable
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
> @Override
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
> public Watermark getCurrentWatermark() {
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
> currentWaterMark = currentTimeStamp-maxDelayAllowed;
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
> return new Watermark(currentWaterMark);
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
> }
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
> @Override
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
> public long extractTimestamp(String s, long l) {
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
> String[] arr= s.split(" ");
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
> long timeStamp = Long.parseLong(arr[2]);
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
> currentTimeStamp = Math.max(timeStamp, currentTimeStamp);
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
> System.out.println("currentTimeStamp: " +&nbsp; currentTimeStamp +",Key:" +
> arr[0] + ",EventTime:" + timeStamp + ",前一条数据的水位线:" + currentWaterMark);
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
> return timeStamp;
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
> }
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
> }
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );
> &nbsp;&nbsp;&nbsp;
> &nbsp;&nbsp;&nbsp; DataStream<Tuple3<String,String,String&amp;gt;&amp;gt;
> ds1 = stream1.map(new MapFunction<String,
> Tuple3<String,String,String&amp;gt;&amp;gt;() {
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @Override
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Tuple3<String,
> String,String&amp;gt; map(String s1) throws Exception {
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
> String[] arr = s1.split(" ");
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return
> Tuple3.of(arr[0],arr[1],arr[2]);
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
> &nbsp;&nbsp;&nbsp; });
> &nbsp;&nbsp;&nbsp;
> &nbsp;&nbsp;&nbsp; ds1.print();
> &nbsp;&nbsp;&nbsp; DataStream<String&amp;gt; stream2 = env
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
> .addSource(new FlinkKafkaConsumer09<String&amp;gt;("stream2", new
> SimpleStringSchema(), properties).setStartFromLatest())
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
> .assignTimestampsAndWatermarks(
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
> new AssignerWithPeriodicWatermarks<String&amp;gt;() {
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
> long currentTimeStamp = 0L;
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
> long maxDelayAllowed = 0L;
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
> long currentWaterMark;
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
> @Nullable
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
> @Override
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
> public Watermark getCurrentWatermark() {
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
> currentWaterMark = currentTimeStamp-maxDelayAllowed;
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
> return new Watermark(currentWaterMark);
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
> }
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
> @Override
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
> public long extractTimestamp(String s, long l) {
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
> String[] arr= s.split(" ");
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
> long timeStamp = Long.parseLong(arr[2]);
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
> currentTimeStamp = Math.max(timeStamp, currentTimeStamp);
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
> System.out.println("currentTimeStamp: " +&nbsp; currentTimeStamp +",Key:" +
> arr[0] + ",EventTime:" + timeStamp + ",前一条数据的水位线:" + currentWaterMark);
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
> return timeStamp;
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
> }
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
> }
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );
> &nbsp;&nbsp;&nbsp;
> &nbsp;&nbsp;&nbsp; DataStream<Tuple3<String,String,String&amp;gt;&amp;gt;
> ds2 =stream2.map(new MapFunction<String,
> Tuple3<String,String,String&amp;gt;&amp;gt;() {
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @Override
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public
> Tuple3<String,String,String&amp;gt; map(String s2) throws Exception {
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String
> [] arr = s2.split(" ");
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return
> Tuple3.of(arr[0],arr[1],arr[2]);
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
> &nbsp;&nbsp;&nbsp; });
> &nbsp;&nbsp;&nbsp; ds2.print();
> &nbsp;&nbsp;&nbsp; ds1.join(ds2).where(new KeySelector<Tuple3<String,
> String,String&amp;gt;,String&amp;gt;() {
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @Override
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public String
> getKey(Tuple3<String, String,String&amp;gt; value) throws Exception {
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return
> value.f0;
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
> &nbsp;&nbsp;&nbsp; }).equalTo(new KeySelector<Tuple3<String, String
> ,String&amp;gt;, String&amp;gt;() {
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @Override
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public String
> getKey(Tuple3<String, String,String&amp;gt; value) throws Exception {
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return
> value.f0;
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
> &nbsp;&nbsp;&nbsp; })
> &nbsp;&nbsp;&nbsp; .window(TumblingEventTimeWindows.of(Time.seconds(3)))
> &nbsp;&nbsp;&nbsp; .apply(new JoinFunction<Tuple3<String,
> String,String&amp;gt;, Tuple3<String, String,String&amp;gt;,
> String&amp;gt;() {
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @Override
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public String
> join(Tuple3<String, String,String&amp;gt; value1, Tuple3<String,
> String,String&amp;gt; value2) throws Exception {
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return
> value1.f1 + "=" + value2.f1;
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
> &nbsp;&nbsp;&nbsp; }).print();
> &nbsp;&nbsp;&nbsp; 结果如下:
> &nbsp;&nbsp;&nbsp; currentTimeStamp:
> 1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
> &nbsp;&nbsp;&nbsp; 4&amp;gt; (1,tom1,1000000055000)
> &nbsp;&nbsp;&nbsp; currentTimeStamp:
> 1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
> &nbsp;&nbsp;&nbsp; 4&amp;gt; (1,tom2,1000000056000)
> &nbsp;&nbsp;&nbsp; currentTimeStamp:
> 1000000055000,Key:1,EventTime:1000000055000,前一条数据的水位线:0
> &nbsp;&nbsp;&nbsp; 3&amp;gt; (1,jerry1,1000000055000)
> &nbsp;&nbsp;&nbsp; currentTimeStamp:
> 1000000056000,Key:1,EventTime:1000000056000,前一条数据的水位线:1000000055000
> &nbsp;&nbsp;&nbsp; 3&amp;gt; (1,jerry2,1000000056000)
> &nbsp;&nbsp;&nbsp; 2&amp;gt; tom1=jerry1



-- 

Benchao Li
School of Electronics Engineering and Computer Science, Peking University
Tel:+86-15650713730
Email: libenchao@gmail.com; libenchao@pku.edu.cn