如何从Spark结构化流中的特定Kafka分区读取

时间:2019-02-15 06:35:54

标签: apache-kafka kafka-consumer-api spark-structured-streaming spark-streaming-kafka

我的Kafka主题有3个分区,我想知道我是否只能从3个分区中读取一个。我的消费者是Spark结构化的流应用程序。

下面是我在Spark中现有的kafka设置。

  val inputDf = spark.readStream
  .format("kafka")
  .option("kafka.bootstrap.servers", brokers)
  .option("subscribe", topic)
  .option("startingOffsets", "latest")
  .load()

2 个答案:

答案 0 :(得分:0)

这是从特定分区读取信息的方式。

 val inputDf = spark.readStream
  .format("kafka")
  .option("kafka.bootstrap.servers", brokers)
  .option("assign", """{"topic":[0]}""") 
  .option("startingOffsets", "latest")
  .load()

PS:要读取多个分区而不是1->“”“ {” topic“:[0,1,2..n]}”“”

答案 1 :(得分:0)

类似地,您如何写入特定分区。我试过了,但是行不通。

        someDF
          .selectExpr("key", "value")
          .writeStream
          .format("kafka")
          .option("kafka.bootstrap.servers", kafkaServers)
          .option("topic", "someTopic")
          .option("partition", partIdx)
          .start()