NiFi使用ConvertRecord将json转换为csv

时间:2018-05-29 06:25:06

标签: json csv apache-nifi

我在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个字段......

1 个答案:

答案 0 :(得分:7)

以下提供的步骤将帮助您完成此任务。

  • 将生成/输出JSON文件的源处理器连接到ConvertRecord
  • 配置ConvertRecord并设置'Record Reader'以使用JsonTreeReader控制器服务和'Record Writer'来使用CSVRecordSetWriter控制器服务
  • 配置控制器服务并设置Schema Registry属性以使用AvroSchemaRegistry
  • 配置AvroSchemaRegistry。转到“属性”标签,然后点击 + 按钮,可以添加动态属性。
  • 提供一些属性名称(例如:mySchema),并为该值提供您输入JSON所需的Avro架构。 (您可以使用InferAvroSchema处理器为您的JSON生成Avro架构)
  • 同时配置JsonTreeReaderCsvRecordSetWriter,并将“架构名称”属性设置为上面提供的名称,在本例中为mySchema
  • 根据需要将ConvertRecord与下游处理器的关系连接起来。