在NiFi中使用ConvertRecord处理Null

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在NiFi中使用ConvertRecord处理Null相关的知识,希望对你有一定的参考价值。

是否可以使用convertRecord或ant其他处理器处理null(CSV中不存在列)?

我每天都有几个CSv文件。但是每个CSv中的字段不一样的问题,是否有一种方法可以将0值发送到数据库中以用于CSV中不存在的所有字段。如果是,请不要让我怎么样?谢谢。

例如:CSV1具有以下字段:年龄,名称,地址,值1,值2,值3

(注意:Value3不是每次都出现在所有CSV中,有时它存在,有时候列不存在)

CSV2将具有以下内容:年龄,名称,地址,值1,值2

在数据库中表的框架如下:年龄,名称,地址,Value1,Value2,Value3

我不希望在数据库中有一些空值后跟一些值。有没有一种方法我的NiFi中的流可以处理“null”并在以自动方式插入数据库之前将其替换为0(如果CSV中不存在模式中给出的特定字段,则流应该将0分配给该字段并摄取数据库中的其他所有内容)

请帮我实现这个目标。谢谢!

答案

对于这种情况,您必须使用默认值定义avro架构。

示例avro架构:

{
"type": "record",
"name": "SQLSchema",
"fields" : [
{"name": "Age", "type": ["null","string"]},
{"name": "Name", "type": ["null","string"]},
{"name": "Address", "type": ["null","int"]},
{"name": "Value1", "type": ["null","int"]},
{"name": "Value2", "type": ["null","int"]},
{"name": "value3", "type": ["null","int"],"default": 0}
]
}

对于value3字段,我们将类型定义为null (or) int,并将默认值定义为0。

如果value3字段没有数据,则它将该值替换为0。

以上是关于在NiFi中使用ConvertRecord处理Null的主要内容,如果未能解决你的问题,请参考以下文章

nifi ConvertRecord JSON to CSV 只获得一条记录?

Nifi JSON正则表达式

✨Nifi系列✨ Nifi同步并解析FTP服务器Excel文件,并存储到数据库

我可以使用 NIFI 在 GreenPlum 和 Postgresql 中运行存储函数吗?如果是,那么我应该使用哪个处理器和啥配置?

在 nifi tailFile 处理器中添加前缀或后缀

NiFi 的 PutHiveStreaming 处理器不会从 hive-site.xml 中获取属性