簡體   English   中英

Spark 結構化流確認消息

[英]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)中刪除已處理的消息

兩個考慮:

  1. 提交后,消息不會從 Kafka 中刪除。 當您的消費者執行提交時,Kafka 會增加此主題相對於已創建的消費者組的偏移量。 但消息會保留在主題中,具體取決於您為主題配置的保留時間。

  2. 實際上,Kafka 源不進行提交,流存儲指向流檢查點目錄中下一條消息的偏移量。 因此,當您重新啟動流時,它會從中消耗最后一個偏移量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM