我在apache nifi中有一个包含动态字段(最多11个字段)的json流,我想将其转换为csv文件。
示例json:
{
"field1":"some text",
"field2":"some text",
"field3":"some text",
"field4":"some text",
"field5":"some text",
"field6":"some text",
"field7":"some text"
}
我不想使用replace或json评估;我是怎么用ConvertRecord做的? 使用这个处理器是如此奇怪和难以工作...
清除有关动态字段的表达式: 我总共有11个领域。一条记录可能包含7个字段,下一条记录可能包含11个字段和接下来的9个字段......
答案 0 :(得分:7)
以下提供的步骤将帮助您完成此任务。
ConvertRecord
。ConvertRecord
并设置'Record Reader'以使用JsonTreeReader
控制器服务和'Record Writer'来使用CSVRecordSetWriter
控制器服务Schema Registry
属性以使用AvroSchemaRegistry
AvroSchemaRegistry
。转到“属性”标签,然后点击 + 按钮,可以添加动态属性。mySchema
),并为该值提供您输入JSON所需的Avro架构。 (您可以使用InferAvroSchema
处理器为您的JSON生成Avro架构)JsonTreeReader
和CsvRecordSetWriter
,并将“架构名称”属性设置为上面提供的名称,在本例中为mySchema
。ConvertRecord
与下游处理器的关系连接起来。