簡體   English   中英

如何從 Spark 結構化流作業中的每個微批次中的相同起始偏移量讀取?

[英]How do I read from same starting offset in each micro batch in spark structured streaming job?

我正在使用火花結構化流。 是否可以在每次批處理執行后重置 Kafka 偏移量,以便每個批處理都從相同的起始偏移量讀取,而不僅僅是新發現的事件?

在此處引用 spark Kafka 集成文檔中的startingOffsets描述

對於流式查詢,這僅適用於新查詢開始時,並且恢復將始終從查詢停止的地方開始。 查詢期間新發現的分區將最早開始。

現在,我正在通過為每個批處理循環從 Kafka 內部創建 static dataframe 並使用格式為“rate”的虛擬流數據集來做到這一點。 想知道是否有更好的方法來做到這一點

對於結構化流式處理,可以將startingOffsets設置為earliest ,以便您每次消費時都從最早的可用偏移量開始。 以下將做的伎倆

.option("startingOffsets", "earliest")

但是請注意,這僅對新創建的查詢有效:

startingOffsets

開始查詢時的起點, "earliest"表示來自最早的偏移量, "latest"表示僅來自最新的偏移量,或者是指定每個 TopicPartition 的起始偏移量的 json 字符串。 在 json 中, -2作為偏移量可用於表示最早, -1表示最晚。 注意:對於批量查詢,最新(隱式或在 json 中使用-1 )是不允許的。 對於流式查詢,這僅適用於新查詢開始時,並且恢復將始終從查詢停止的地方開始 查詢期間新發現的分區將最早開始。


或者,您也可以選擇每次更改消費者組:

.option("kafka.group.id", "newGroupID")

暫無
暫無

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

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