NiFi 使用 ConvertRecord 将 json 转换为 csv
NiFi convert json to csv using ConvertRecord
我在 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"
}
我不想使用替换或 json 评估;我如何使用 ConvertRecord 做到这一点?
使用这个处理器是如此奇怪和难以工作...
关于动态字段的清晰表达:
我总共有 11 个字段。一条记录可能包含 7 个字段,下一条记录可能包含 11 个字段,接下来的 9 个字段...
下面提供的步骤将帮助您完成此操作。:
- 将 generates/outputs JSON 文件的源处理器连接到
ConvertRecord
。
- 配置
ConvertRecord
并设置'Record Reader'使用JsonTreeReader
控制器服务,'Record Writer'使用CSVRecordSetWriter
控制器服务
- 配置控制器服务并设置
Schema Registry
属性 使用 AvroSchemaRegistry
- 配置
AvroSchemaRegistry
。转到 'Properties' 选项卡并单击 + 按钮,您可以添加动态 属性.
- 提供一些 属性 名称(例如:
mySchema
),对于值,提供您的输入所需的 Avro 模式 JSON。 (您可以使用 InferAvroSchema
处理器为您的 JSON 生成 Avro 模式)
- 同时配置
JsonTreeReader
和 CsvRecordSetWriter
并将 'Schema Name' 属性 设置为上面提供的名称,在本例中为 mySchema
.
- 根据您的需要将
ConvertRecord
的关系连接到下游处理器。
我在 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"
}
我不想使用替换或 json 评估;我如何使用 ConvertRecord 做到这一点? 使用这个处理器是如此奇怪和难以工作...
关于动态字段的清晰表达: 我总共有 11 个字段。一条记录可能包含 7 个字段,下一条记录可能包含 11 个字段,接下来的 9 个字段...
下面提供的步骤将帮助您完成此操作。:
- 将 generates/outputs JSON 文件的源处理器连接到
ConvertRecord
。 - 配置
ConvertRecord
并设置'Record Reader'使用JsonTreeReader
控制器服务,'Record Writer'使用CSVRecordSetWriter
控制器服务 - 配置控制器服务并设置
Schema Registry
属性 使用AvroSchemaRegistry
- 配置
AvroSchemaRegistry
。转到 'Properties' 选项卡并单击 + 按钮,您可以添加动态 属性. - 提供一些 属性 名称(例如:
mySchema
),对于值,提供您的输入所需的 Avro 模式 JSON。 (您可以使用InferAvroSchema
处理器为您的 JSON 生成 Avro 模式) - 同时配置
JsonTreeReader
和CsvRecordSetWriter
并将 'Schema Name' 属性 设置为上面提供的名称,在本例中为mySchema
. - 根据您的需要将
ConvertRecord
的关系连接到下游处理器。