繁体   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