kafka丟資料 重複資料分析

2021-07-22 23:16:16 字數 1137 閱讀 1286

填別人的坑again。資料不正常,追到kafka這裡了,分析了很久的程式,做乙個總結,關於丟資料和重複資料。

先說丟資料。目前遇到一種丟資料的情況。

如果auto.commit.enable=true當consumer fetch了一些資料但還沒有完全處理掉的時候,剛好到commit interval出發了提交offset操作,接著consumer crash掉了。這時已經fetch的資料還沒有處理完成但已經被commit掉,因此沒有機會再次被處理,資料丟失。

那麼換一種方法,我們手動提交offset,這時會出現另外一種重複資料的情況,後面會提到。

假設乙個場景,我們使用high level consumer api來消費kafka中的資料,每當消費n條資料並成功插入mysql後,我們手動執行一下consumer.commitsync()操作,提交一次offset。這種情況是先消費成功後再提交,因此不再丟資料了,但是會出現重複資料的情況。

但是!如果當程式消費了一定數量的資料之後,還沒來得及提交offset,程式crash了,那麼下次再啟動程式之後,就會重複消費這部分資料。如果程式不夠穩健,是可以出現十分多的重複資料的。

最近又抓出來一種特殊的出現重複資料的情況。出現在補資料的時候。

假設我們的資料流是從flume抽取資料到kafka,然後spark streaming來讀取kafka的資料。假設我們在執行一段時間後,發現資料有問題,然後想重新把近兩天的資料消費一下。這時候我們會用flume把原始資料重新抽過來,那麼問題來了。因為在kafka中已經持久化了一部分資料,如果這些資料沒有消費完,然後flume又重新抽了一遍,那麼這部分資料就會重複。

以上自己的分析都是使用的high level api,因為簡單嘛,因此對於offset的控制相對來說比較粗粒度。據說low level的控制力度比較細,可以比較好地控制offset。但是使用比較複雜,暫時還沒有打算用。

另外,spark對於kafka的呼叫也有比較好的實現,據說是能比較好的控制資料丟失的問題。目前還沒有研究完,後面繼續。

color=#0099ff size=72 face=」黑體」

2016-09-21 20:39:00 hzct

csdn部落格

Kafka丟資料的情況

1.消費端弄丟了資料 消費者自動提交offset會丟資料,只要關閉自動提交 offset,在處理完之後自己手動提交 offset,就可以保證資料不會丟。2.kafka 弄丟了資料 kafka宕機重新選舉leader的時候,要是 follower沒有及時同步資料,就會丟資料。在 kafka 服務端設定...

資料分析 資料分析概述

了解業務 了解資料 確認業務和資料 預期分析和管理 資料分析方式01.了解資料資料 1.測量標度型別 屬性本源並不是數字或者符號,通過測量標度將數值或者符號和物件的屬性建立關聯。屬性的型別 測量尺度 nominal 標稱 等於或者不等於 一對一的變換 ordinal 序數 大於或者小於 單調函式的變...

篩選重複資料

沒有主鍵,有大量重複資料,並且兩張表之間也可能有重複資料。先要求 匯出資料不能重複,身份證號碼相同的按警告級別高的匯出,身份證號碼相同的按警告級別也相同的則按修改時間最新的匯出。大致有這麼幾個方案 1。直接寫sql語句把要用的資料篩選出來。2。新建乙個臨時表,先將兩張表的資料放入臨時表,然後篩選。3...