在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值中是大写。
那么,如何转换和应用这些转换?
答案 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.