Apache flink 阿帕奇·弗林克和阿帕奇脉冲星

Apache flink 阿帕奇·弗林克和阿帕奇脉冲星,apache-flink,flink-streaming,apache-pulsar,Apache Flink,Flink Streaming,Apache Pulsar,我正在使用Flink从Apache Pulsar读取数据。 我在pulsar中有一个分区主题,有8个分区。 在本主题中,我生成了1000条消息,分布在8个分区中。 我的笔记本电脑中有8个内核,因此我有8个子任务(默认情况下,并行度=#个内核)。 在执行Eclipse中的代码后,我打开了Flink UI,发现一些子任务没有收到任何记录(空闲)。 我希望所有8个子任务都能得到利用(我希望每个子任务都映射到我的主题中的一个分区) 重新启动作业后,我发现有时使用3个子任务,有时使用4个任务,而其余子任务

我正在使用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(" >>> ");
ConsumerConfiguration数据ConsumerConfiguration数据=新建ConsumerConfiguration数据();
Set topicsSet=new HashSet();
主题集。添加(“flink-08”);
ConsumerConfiguration Data.setTopicNames(TopicSet);
ConsumerConfiguration Data.setSubscriptionName(“my-sub0111”);
ConsumerConfiguration Data.setSubscriptionType(SubscriptionType.Key\u共享);
consumerConfigurationData.setConsumerName(“consumer-01”);
ConsumerConfiguration Data.setSubscriptionInitialPosition(SubscriptionInitialPosition.Earlime);
PulsarSourceBuilder=PulsarSourceBuilder.builder(新SimpleStringSchema()).pulsarAllConsumerConf(ConsumerConfiguration数据).serviceUrl(“pulsar://localhost:6650");
SourceFunction src=builder.build();
DataStream stream=env.addSource(src);
流式打印(“>>”);

关于脉冲星的问题,我知道的还不够多。我建议设置一个更大的测试,看看结果如何。通常,您的分区比插槽多,并且有些插槽以某种随机方式使用多个分区

还有,我怎么知道在分拍之间是否有洗牌呢


最简单的方法是查看FlinkWebUI的拓扑结构。在那里,您应该可以看到任务的数量和通道类型。如果你想要更多的细节,你可以发布一个屏幕截图,但是在这种情况下,没有什么可以改变的,因为你只有一个源和一个汇。

关于脉冲星的问题,我知道的还不够多。我建议设置一个更大的测试,看看结果如何。通常,您的分区比插槽多,并且有些插槽以某种随机方式使用多个分区

还有,我怎么知道在分拍之间是否有洗牌呢

最简单的方法是查看FlinkWebUI的拓扑结构。在那里,您应该可以看到任务的数量和通道类型。如果你想要更多的细节,你可以发布一个截图,但在这种情况下,没有什么会被洗牌,因为你只有一个源和一个汇