有人知道是否可以调用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();
答案 0 :(得分:1)
火花结构流,当在后台调用具有kafka格式的writeStream
时使用KafkaProducer。
如果在经纪人端auto.create.topics.enable
的值是true
(默认值),
当KafkaProducer提取元数据时,代理将创建新主题。
KafkaProducer没有传递任何 topic的属性。
经纪人仅使用默认一次(例如default.replication.factor
,num.partitions
,log.cleanup.policy
)来创建主题。
您不能通过KafkaProducer传递主题创建属性。
答案 1 :(得分:0)
也如文档中所述,在生产者或消费者属性中使用kafka
前缀。
Kafka自己的配置可以通过DataStreamReader.option与 卡夫卡。前缀。
示例:
stream.option("kafka.bootstrap.servers","host:port")
此外,您只能在.options
中传递生产者或消费者级别的属性。如果需要设置任何主题级别的配置,则需要使用代理配置,而该配置不能通过从默认配置获取的Spark Streaming代码进行设置。