我刚刚拿到了下面这个例子用于并行处理,并有一些相关的问题:
setParallelism(5) 只为 sum 设置 Parallelism 5,还是对 flatMap 和 sum 都设置了 Parallelism 5?
我们是否可以将不同的并行度分别设置给不同的操作符,例如分别设置 sum 的并行度为 5 和 flatMap 的并行度为 10。
根据我的理解,keyBy 根据不同的键将 DataStream 划分为逻辑流/分区,假设有 10,000 个不同的键值,那么就有 10,000 个不同的分区,那么有多少个线程会处理这 10,000 个分区?只有 5 个线程吗?如果我们没有设置 setParallelism(5) 会怎样?
https://ci.apache.org/projects/flink/flink-docs-release-1.3/dev/parallel.html
final StreamExecutionEnvironment env =
StreamExecutionEnvironment.getExecutionEnvironment();
DataStream<String> text = [...]
DataStream<Tuple2<String, Integer>> wordCounts = text
.flatMap(new LineSplitter())
.keyBy(0)
.timeWindow(Time.seconds(5))
.sum(1).setParallelism(5);
wordCounts.print();
env.execute("Word Count Example");
keyBy()
和setParallelism()
之间的区别,以及如果我在代码中没有使用keyBy
但仍然设置了parallelism
会发生什么,而你让我的一天变得美好。 - whatsinthename