gpt4 book ai didi

apache-spark - 将 Apache Spark 结果发布到另一个应用程序/Kafka

转载 作者:行者123 更新时间:2023-12-02 01:27:35 26 4
gpt4 key购买 nike

我目前正在设计一个快速数据聚合模块,它接收事件并将它们发布到 Kafka 集群。然后我们集成了 Kafka 和 Spark Streaming。 Spark Streaming 从 Kafka 读取流并执行一些计算。计算完成后,我们需要将结果发送到另一个应用程序。此应用程序可以是 Web 服务或 Kafka 集群。

我想知道我们如何才能做到这一点?据我所知,Spark Stream 将数据推送到数据库和文件系统等下游。

您将如何设计这样的应用程序?我应该用 Storm 替换 Spark Stream 以便能够将结果发布到另一个应用程序吗?

最佳答案

请引用dstream.foreachRDD,这是一个强大的原语,允许将数据发送到外部系统。
Design Patterns for using foreachRDD

下面是我的kafka集成代码供大家引用(没有优化,只是为了POC,KafkaProducer对象可以在foreachRDD中复用):

DStream.foreachRDD(rdd => {
rdd.foreachPartition { partitionOfRecords =>
val kafkaProps = new Properties()
kafkaProps.put("bootstrap.servers", props("bootstrap.servers"))
kafkaProps.put("client.id", "KafkaIntegration Producer");
kafkaProps.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer");
kafkaProps.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer");
val producer = new KafkaProducer[String, String](kafkaProps);

partitionOfRecords.foreach(record => {
val message = new ProducerRecord[String, String]("hdfs_log_test", record.asInstanceOf[String])
producer.send(message)
})
producer.close()
}
})

关于apache-spark - 将 Apache Spark 结果发布到另一个应用程序/Kafka,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36167577/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com