在数据库中的静态表上做 OLAP 分析时,两表 join 是非常常见的操作。同理,在流式处理作业中,有时也需要在两条流上做 join 以获得更丰富的信息。Flink DataStream API 为用户提供了3个算子来实现双流 join,分别是:
- join()
- coGroup()
- intervalJoin()
本文举例说明它们的使用方法,顺便聊聊比较特殊的 interval join 的原理。
1 准备数据
从 Kafka 分别接入点击流和订单流,并转化为 POJO。
DataStream<String> clickSourceStream = env
.addSource(new FlinkKafkaConsumer011<>(
"ods_analytics_access_log",
new SimpleStringSchema(),
kafkaProps
).setStartFromLatest());
DataStream<String> orderSourceStream = env
.addSource(new FlinkKafkaConsum