具有多个Kafka集群的Spark结构化流

时间:2018-07-17 18:30:06

标签: apache-spark

我正在尝试获取有关Spark结构化流的一些基本信息,并从不同集群的多个主题中进行阅读。我能够找到一些教程,该教程显示了如何从SAME集群中的多个kafka主题中提取信息,但是如果这些主题在不同集群中又该怎么办?一个人如何将多个kafka集群中的主题读入火花?

1 个答案:

答案 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实例在多个群集之间实现了负载均衡,这使我可以在每个群集上订阅相同的主题,但可以将其作为一个主题进行处理。