簡體   English   中英

處理(Drop and Log) Kafka 生產者發布的壞數據,這樣Spark (Java) Consumer 不會將其存儲在HDFS 中

[英]Handle(Drop and Log) bad data published by Kafka producer , such that Spark (Java) Consumer doesn't store it in HDFS

目前,我正在使用 Java 內置的 Spark Consumer 來讀取 Kafka Producer 發布的記錄(json)並將其存儲在 hdfs 中。 如果假設我的記錄具有以下屬性(id、名稱、公司、發布日期),目前,我正在處理異常,如果缺少其中一個屬性,則程序會拋出一個運行時異常,並顯示日志消息中的一個該屬性丟失,但問題是,由於異常,整個火花作業完全停止。 我想處理那些壞記錄,通過避免這種情況,而不是停止整個 spark 作業,程序會刪除並記錄這些壞記錄,而不是拋出異常。

答案將基於意見。 這是我會做的,

不要在日志文件中記錄拒絕,因為這可能很大並且您可能需要重新處理它們。 而是為拒絕原因的拒絕記錄創建另一個數據集。 您的過程將產生 2 個數據集 - 好的和拒絕的。

盡管有可能,但不應將異常用於代碼的控制流。 我會使用謂詞/過濾器/IF 條件的想法,它會檢查數據並拒絕那些不符合謂詞/過濾器/IF 條件的數據。

如果您使用異常,則將其綁定到處理單個記錄而不是整個作業。 最好避免這種想法。

暫無
暫無

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

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