.assignTimestampsAndWatermarks(new CustomWmEmitter<Long>() { .assignTimestampsAndWatermarks(new CustomWmEmitter<String>() {
.assignTimestampsAndWatermarks(new CustomWmEmitter<Long>() { .assignTimestampsAndWatermarks(new CustomWmEmitter<String>() {
.assignTimestampsAndWatermarks(new CustomWmEmitter<Long>() { .assignTimestampsAndWatermarks(new CustomWmEmitter<String>() { @Override public long extractTimestamp(String element, long previousElementTimestamp) {
.assignTimestampsAndWatermarks(new CustomWmEmitter<Long>() { .assignTimestampsAndWatermarks(new CustomWmEmitter<String>() { @Override public long extractTimestamp(String element, long previousElementTimestamp) {
public void cancel() { }).assignTimestampsAndWatermarks(new Tuple2TimestampExtractor());
public void cancel() {} }).assignTimestampsAndWatermarks(new Tuple2TimestampExtractor());
public void cancel() {} }).assignTimestampsAndWatermarks(new Tuple3TimestampExtractor()); public void cancel() {} }).assignTimestampsAndWatermarks(new Tuple3TimestampExtractor());
public void cancel() {} }).assignTimestampsAndWatermarks(new Tuple2TimestampExtractor());
public void cancel() {} }).assignTimestampsAndWatermarks(new Tuple2TimestampExtractor());
public void cancel() { }).assignTimestampsAndWatermarks(new Tuple2TimestampExtractor()); public void cancel() { }).assignTimestampsAndWatermarks(new Tuple2TimestampExtractor());
public void cancel() { }).assignTimestampsAndWatermarks(new Tuple3TimestampExtractor());
@Test public void testBoundsAreInclusiveByDefault() throws Exception { final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime); env.setParallelism(1); DataStream<Tuple2<String, Integer>> streamOne = env.fromElements( Tuple2.of("key", 0), Tuple2.of("key", 1), Tuple2.of("key", 2) ).assignTimestampsAndWatermarks(new AscendingTuple2TimestampExtractor()); DataStream<Tuple2<String, Integer>> streamTwo = env.fromElements( Tuple2.of("key", 0), Tuple2.of("key", 1), Tuple2.of("key", 2) ).assignTimestampsAndWatermarks(new AscendingTuple2TimestampExtractor()); streamOne.keyBy(new Tuple2KeyExtractor()) .intervalJoin(streamTwo.keyBy(new Tuple2KeyExtractor())) .between(Time.milliseconds(0), Time.milliseconds(2)) .process(new CombineToStringJoinFunction()) .addSink(new ResultSink()); env.execute(); expectInAnyOrder( "(key,0):(key,0)", "(key,0):(key,1)", "(key,0):(key,2)", "(key,1):(key,1)", "(key,1):(key,2)", "(key,2):(key,2)" ); }
Tuple2.of(new Event(1, "start", 2.0), 4L), Tuple2.of(new Event(1, "end", 2.0), 6L) ).assignTimestampsAndWatermarks(new AssignerWithPunctuatedWatermarks<Tuple2<Event, Long>>() {
@Test public void testBoundsCanBeInclusive() throws Exception { final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime); env.setParallelism(1); DataStream<Tuple2<String, Integer>> streamOne = env.fromElements( Tuple2.of("key", 0), Tuple2.of("key", 1), Tuple2.of("key", 2) ).assignTimestampsAndWatermarks(new AscendingTuple2TimestampExtractor()); DataStream<Tuple2<String, Integer>> streamTwo = env.fromElements( Tuple2.of("key", 0), Tuple2.of("key", 1), Tuple2.of("key", 2) ).assignTimestampsAndWatermarks(new AscendingTuple2TimestampExtractor()); streamOne.keyBy(new Tuple2KeyExtractor()) .intervalJoin(streamTwo.keyBy(new Tuple2KeyExtractor())) .between(Time.milliseconds(0), Time.milliseconds(2)) .process(new CombineToStringJoinFunction()) .addSink(new ResultSink()); env.execute(); expectInAnyOrder( "(key,0):(key,0)", "(key,0):(key,1)", "(key,0):(key,2)", "(key,1):(key,1)", "(key,1):(key,2)", "(key,2):(key,2)" ); }
@Test public void testBoundsCanBeExclusive() throws Exception { final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime); env.setParallelism(1); DataStream<Tuple2<String, Integer>> streamOne = env.fromElements( Tuple2.of("key", 0), Tuple2.of("key", 1), Tuple2.of("key", 2) ).assignTimestampsAndWatermarks(new AscendingTuple2TimestampExtractor()); DataStream<Tuple2<String, Integer>> streamTwo = env.fromElements( Tuple2.of("key", 0), Tuple2.of("key", 1), Tuple2.of("key", 2) ).assignTimestampsAndWatermarks(new AscendingTuple2TimestampExtractor()); streamOne.keyBy(new Tuple2KeyExtractor()) .intervalJoin(streamTwo.keyBy(new Tuple2KeyExtractor())) .between(Time.milliseconds(0), Time.milliseconds(2)) .upperBoundExclusive() .lowerBoundExclusive() .process(new CombineToStringJoinFunction()) .addSink(new ResultSink()); env.execute(); expectInAnyOrder( "(key,0):(key,1)", "(key,1):(key,2)" ); }
).assignTimestampsAndWatermarks(new AssignerWithPunctuatedWatermarks<Tuple2<Event, Long>>() {
).assignTimestampsAndWatermarks(new AssignerWithPunctuatedWatermarks<Tuple2<Event, Long>>() {
Tuple2.of("key2", 5) .assignTimestampsAndWatermarks(new AscendingTuple2TimestampExtractor()) .keyBy(new Tuple2KeyExtractor()); Tuple2.of("key2", 5) .assignTimestampsAndWatermarks(new AscendingTuple2TimestampExtractor()) .keyBy(new Tuple2KeyExtractor());
Tuple2.of("key", 5) .assignTimestampsAndWatermarks(new AscendingTuple2TimestampExtractor()) .keyBy(new Tuple2KeyExtractor()); Tuple2.of("key", 5) .assignTimestampsAndWatermarks(new AscendingTuple2TimestampExtractor()) .keyBy(new Tuple2KeyExtractor());
Tuple2.of(new Event(3, "middle", 6.0), 9L), Tuple2.of(new Event(3, "end", 7.0), 7L) ).assignTimestampsAndWatermarks(new AssignerWithPunctuatedWatermarks<Tuple2<Event, Long>>() {