加入ApacheFlink中的数据流



我在Apache Flink中有两个来自Flink训练RidesAndFares练习的数据流

TaxiRide stream () rideId, taxiId, driverId, ...
TaxiFare stream () rideId, isStart, startTime, endTime, startLon, ...

我试着以的身份加入他们

rides
.join(fares)
.where(r => r.rideId)
.equalTo(f => f.rideId)
.window(TumblingEventTimeWindows.of(Time.milliseconds(2)))
.apply {(r, f) => (r,f)}

测试还可以,但在我找到的解决方案中加入了RichCoFlatMapFunction,你能帮我理解吗:

  1. 这种方式之间的区别
  2. 哪种类型的窗口使用RichCoFlatMapFunction(翻滚、滑动、会话、间隔(
  3. .join如何处理state(放一些东西(

本练习的参考解决方案是用RichCoFlatMapFunction实现的,因为本练习的目的是展示如何使用一些较低级别的机制:即键控状态和连接流。

顺便说一下,通常在实现联接时;"手工";将使用CCD_ 5而不是CCD_。但在Flink教程中,我们介绍了这个特定的练习,我们还没有谈到流程函数和计时器。

没有一个内置的窗口类型被实现为RichCoFlatMapFunction,但窗口连接有点相似,因为它们也使用了两个输入运算符。您在apply方法中提供的ProcessJoinFunction是一种具有两个输入流的RichFunction,它可以以与任何其他RichFunction相同的方式成为有状态的。

相关内容

  • 没有找到相关文章

最新更新