在NIFI中如何在没有CSV标头的情况下从CSV转换为JSON

时间:2019-05-11 22:21:24

标签: apache-nifi

在NIFI中,如何在没有CSV标头的情况下从CSV转换为JSON。为每个CSV行searate json流文件创建并发送到下一个处理器。 下面是csv

861359032561480,1,15.480237,190506144035,a
861359032561480,3,16.480237,190506144035,b
861359032561480,2,17.480237,190506144035,c

预期的json是:

{"test":861359032561480,"test2":"1","test3":15.48,"test4":190506144035,"test5":A}

在上述JSON中,第二个json值1是字符串,在第三个json值中,该值限制为小数点后2位,在第四个json值中是大写。

那么,如何转换和应用这些转换?

1 个答案:

答案 0 :(得分:2)

使用QueryRecord(将字段转换为大写)处理器,然后使用Split the array of json记录。

  • 配置 Record Reader(CSVReader)/Writer(JsonRecordSetWriter)

  • JsonSetWriter 中,保持匹配的avro schema类似于long,string,decimal

QueryRecord 处理器中,添加新属性,并保留sql语句,以使用ApacheCalcite sql解析器将“ test5”转换为UPPER(test5)的情况。

您的sql语句将如下所示。

select test,test2,test3,test4,UPPER(test5)test5 from flowfile

然后使用SplitRecord (prefered if json file is big)(或)SplitJson处理器将json记录数组拆分为单独的流文件。

流量:

1.QueryRecord //to read csv and write in json format
2.SplitRecord (or) SplitJson //to Split array into individual flowfiles
3.other processors.