【发布时间】:2020-10-30 17:35:23
【问题描述】:
我正在学习 flink 并试图理解一些概念。这里有几个问题:
-
keyBy对流的操作和从RichParallelSourceFunction像FlinkKinesisConsumer这样的子类获取源之间有什么区别?两种操作都会划分流。 - 还尝试实现一个非常简单的 keyBy 运算符来理解它,如下所示:
DataStream input = env.fromElements("1", "2", "3", "4", "5", "6") .keyBy((KeySelector<String, Integer>) value -> Integer.parseInt(value) % 2); DataStream parsed = input.map(new MyMapper()); DataStream parsedStr = input.map(new MyStrMapper()); parsed.print(); parsedStr.print(); env.execute("myParser");
但我得到的输出令人困惑:
3> 1
3> 2
3> 3
3> 4
3> 5
3> 6
3> I am 1
3> I am 2
3> I am 3
3> I am 4
3> I am 5
3> I am 6
这意味着在子任务 3 上执行的所有操作。有人可以帮助解释原因吗?
【问题讨论】:
标签: java apache-flink flink-streaming