Spark Streaming仅从一个kafka主题读取数据

时间:2019-01-14 10:08:35

标签: apache-spark apache-kafka spark-streaming

我有一个Spark Streaming应用程序,我必须订阅多个主题才能读取和处理数据。现在进行测试,我添加了两个主题。 但是我下面的代码仅从一个主题读取数据。我尝试过通过自定义代码以及通过Kafka消费者批处理文件发送数据。如果我为每个主题确定多个直接流,那么我就能从所有主题中读取内容。但是我有1000多个主题,所以我只想创建一个直接流并提供一个主题集。有人知道我可能在做什么错吗?

Collection<String> topicList = new ArrayList<>();   
topicList.add("A");
topicList.add("B");
final JavaInputDStream<ConsumerRecord<String, String>> stream = KafkaUtils.createDirectStream(
                    streamingContext,
                    LocationStrategies.PreferConsistent(),
                    ConsumerStrategies.<
                    String, String> Subscribe(topicList, kafkaParams));

for(String topic:topicList)
{
    JavaDStream<ConsumerRecord<String, String>> filteredStreams = stream.filter(msg -> {
        return msg.topic().equals(topic);
    });

    JavaPairDStream<String, String> kafkaMessages = filteredStreams.mapToPair(new KafkaConsumerFunction());
    process(kafkaMessages );
}

0 个答案:

没有答案