我正在尝试获取有关Spark结构化流的一些基本信息,并从不同集群的多个主题中进行阅读。我能够找到一些教程,该教程显示了如何从SAME集群中的多个kafka主题中提取信息,但是如果这些主题在不同集群中又该怎么办?一个人如何将多个kafka集群中的主题读入火花?
答案 0 :(得分:1)
sparkSession.readStream.format(....)
将返回DataStreamReader
。您可以多次创建一个Array[DataStreamReader]
。通过这些DataStreamReader
,您可以将它们组合起来以返回单个DataFrame
,您可以根据需要使用它。
def getCombinedDF(streams: Array[DataStreamReader], topicName: String): DataFrame = {
streams.map(rs => {
rs
.option("subscribe", topicName)
.load()
})
.reduce(_.union(_))
}
我们的Kafka实例在多个群集之间实现了负载均衡,这使我可以在每个群集上订阅相同的主题,但可以将其作为一个主题进行处理。