Spark代码编写到Kafka压缩主题

时间:2019-03-17 17:22:03

标签: apache-spark apache-kafka

有人知道是否可以调用writeStream到Kafka主题,其中创建的主题是紧凑主题吗?下面的代码创建了一个Kafka主题,但是传递的选项将被忽略。

    StreamingQuery query = ds
            .writeStream()
            .format("kafka")
            .option("kafka.bootstrap.servers", "localhost:9092"))
            .option("topic", "myTopic")
            .option("cleanup.policy", "compact")
            .option("min.insync.replicas", 1)
            .option("segment.bytes", 4096)
            .option("delete.retention.ms", 100)
            .option("min.compaction.lag.ms", 0)
            .option("min.cleanable.dirty.ratio", 0.01)
            .start();

2 个答案:

答案 0 :(得分:1)

火花结构流,当在后台调用具有kafka格式的writeStream时使用KafkaProducer。

如果在经纪人端auto.create.topics.enable的值是true(默认值), 当KafkaProducer提取元数据时,代理将创建新主题。

KafkaProducer没有传递任何 topic的属性。 经纪人仅使用默认一次(例如default.replication.factornum.partitionslog.cleanup.policy)来创建主题。

您不能通过KafkaProducer传递主题创建属性。

答案 1 :(得分:0)

也如文档中所述,在生产者或消费者属性中使用kafka前缀。

  

Kafka自己的配置可以通过DataStreamReader.option与   卡夫卡。前缀。

示例:

stream.option("kafka.bootstrap.servers","host:port")

此外,您只能在.options中传递生产者或消费者级别的属性。如果需要设置任何主题级别的配置,则需要使用代理配置,而该配置不能通过从默认配置获取的Spark Streaming代码进行设置。

https://spark.apache.org/docs/2.2.0/structured-streaming-kafka-integration.html#kafka-specific-configurations