问题描述
我正在尝试通过Avroschemaregistry使用ValidateRecord Processor验证json。我需要将验证错误消息存储到sql表中,因此我试图在属性中捕获错误消息,但是我无法在属性中捕获错误消息,不知道怎么做
解决方法
在ValidateRecord处理程序之后,您可以选择将“无效”的流文件路由到单独的日志并将它们路由到sql表,如果它们“失败”,则可以执行相同的操作。我从“错误消息”中假设您的意思是“ bullentin”,当处理器无法根据您的模式验证或使流文件无效时,就会发生这种情况。
对此的一种可能的解决方案是使用SiteToSiteBulletinReportingTask
Screenshot of SiteToSiteBulletinReportingTask
您可以构建数据流来接收这些公告事件,根据需要对其进行操作,然后将其存储在您选择的位置中,以满足审计需求。
听起来,SiteToSiteBulletinReportingTask应该能够实现您想要的。要实现此功能,请将iteToSiteBulletinReportingTask添加到NiFi设置中的“报告任务”中:Reporting Tasks in NiFi Settings
您可以命名您的输入端口,并使它流向您的SQL存储,然后您应该拥有所需的内容。
您需要允许NiFi节点在输入端口上通过站点到站点接收数据,还需要在根进程组上授予正确的权限,以便节点能够查看组件,查看和修改组件。数据。
侧面说明:我通常会记录所有内容,并记录所有故障和无效的日志文件存储路径,例如我存放的路径。 HBase / SQL。我看到的一个建议是配置日志记录子系统,以将特定的错误类别另外发送到您选择的目的地(例如,主动通知与被动解析日志)。 NiFi正在利用非常灵活的logback系统(log4j的发展)。最好的部分-对$ NIFI_HOME / conf / logback.xml配置文件的更改不需要重新启动实例,将在30秒或更短的时间内完成。