我正在使用 Flink 从 Apache Pulsar 读取数据。我在 pulsar 中有一个分区主题,有 8 个分区。我在这个主题中生成了 1000 条消息,分布在 8 个分区中。我的笔记本电脑有 8 个内核,所以我有 8 个子任务(默认并行度 = 内核数)。我从 Eclipse 执行代码后打开 Flink-UI,发现一些子任务没有收到任何记录(空闲)。我期望所有 8 个子任务都将被利用(我期望每个子任务都将映射到我的主题中的一个分区)。
重新启动作业后,我发现有时使用了 3 个子任务,有时使用了 4 个任务,而其余的子任务保持空闲。
请您的支持澄清这种情况。
另外我怎么知道子镜头之间是否有洗牌?
我的代码:
ConsumerConfigurationData<String> consumerConfigurationData = new ConsumerConfigurationData<>();
Set<String> topicsSet = new HashSet<>();
topicsSet.add("flink-08");
consumerConfigurationData.setTopicNames(topicsSet);
consumerConfigurationData.setSubscriptionName("my-sub0111");
consumerConfigurationData.setSubscriptionType(SubscriptionType.Key_Shared);
consumerConfigurationData.setConsumerName("consumer-01");
consumerConfigurationData.setSubscriptionInitialPosition(SubscriptionInitialPosition.Earliest);
PulsarSourceBuilder<String> builder = PulsarSourceBuilder.builder(new SimpleStringSchema()).pulsarAllConsumerConf(consumerConfigurationData).serviceUrl("pulsar://localhost:6650");
SourceFunction<String> src = builder.build();
DataStream<String> stream = env.addSource(src);
stream.print(" >>> ");