![](/img/trans.png)
[英]Reading Kafka Connect JSONConverter messages with schema using Spark Structured Streaming
[英]Spark structured streaming acknowledge messages
我正在使用Spark Structured Streaming從 Kafka 主題(比如 topic1)讀取並使用 SINK 寫入另一個主題(topic1-result)。 在使用 Sink 寫入另一個主題后,我可以看到消息沒有從 Topic1 中刪除。
// Subscribe to 1 topic
val df = spark
.readStream
.format("kafka")
.option("kafka.bootstrap.servers", "host1:port1")
.option("subscribe", "topic1")
.load()
//SINK to another topic
val ds = df
.selectExpr("CAST(key AS STRING)", "CAST(value AS STRING)")
.writeStream
.format("kafka")
.option("kafka.bootstrap.servers", "host1:port1")
.option("checkpointLocation", "/tmp/checkpoint1")
.option("topic", "topic1-result")
.start()
文檔說我們不能對結構化流使用自動提交
enable.auto.commit:Kafka 源不提交任何偏移量。
但是如何確認消息並從主題(topic1)中刪除已處理的消息
兩個考慮:
提交后,消息不會從 Kafka 中刪除。 當您的消費者執行提交時,Kafka 會增加此主題相對於已創建的消費者組的偏移量。 但消息會保留在主題中,具體取決於您為主題配置的保留時間。
實際上,Kafka 源不進行提交,流存儲指向流檢查點目錄中下一條消息的偏移量。 因此,當您重新啟動流時,它會從中消耗最后一個偏移量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.