我正在使用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(" >>> ");发布于 2020-01-28 18:39:49
关于脉冲星的问题,我知道的还不够多。我建议设置一个更大的测试,看看结果如何。通常,您的分区会多于插槽,并且某些插槽会以某种随机的方式消耗多个分区。
另外,我如何才能知道子镜头之间是否存在混洗?
最简单的方法是查看Flink Web UI的拓扑。在那里,您应该可以看到任务的数量和通道类型。如果你想要更多的细节,你可以发布一个截图,但在这种情况下,没有任何东西会被打乱,因为你只有一个来源和一个接收器。
https://stackoverflow.com/questions/59869050
复制相似问题