开发者社区> 问答> 正文

Flink中的DataStream可以在两个算子间传输数据的模式有哪些?

Flink中的DataStream可以在两个算子间传输数据的模式有哪些?

展开
收起
游客k7rjnht6hbtk6 2021-12-10 20:07:07 553 0
1 条回答
写回答
取消 提交回答
  • 1.一对一

    例如Source 和 map()算子之间。

    可保留元素的分区和排序信息(也就是说map()算子的1号实例可以相同顺序看到跟Source算子的1号实例生产顺序相同的元素)。

    2.重分发-类似MR Shuffle

    例如的 map()和 keyBy/window算子 之间,以及 keyBy/window和 Sink 之间。

    会更改数据所在Stream分区。注意此时只能保证一个算子subtask发到一个下游算子subtask的元素顺序性。如上图keyBy/window 的 subtask[2] 接收到的 map() 的 subtask[1]的数据有序,但发送到Sink的所有数据中,无法确定不同key的聚合结果的到达顺序。

    每个算子subtask发送数据到不同的下游算子subtask,分发依据是具体的transformation(相关方法在org.apache.flink.streaming.api.datastream.DataStream):

    2021-12-10 20:07:44
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Flink CDC Meetup PPT - 龚中强 立即下载
Flink CDC Meetup PPT - 王赫 立即下载
Flink CDC Meetup PPT - 覃立辉 立即下载