我为读取json数据设置了以下流程,并使用convertRecord处理器将其转换为csv。但是,输出流文件仅填充单个记录(我假设仅是第一条记录),而不是所有记录。
有人可以提供正确的配置吗?
源json数据:
INSERT
{"creation_Date": "2018-08-19", "Hour_of_day": 7, "log_count": 2136}
{"creation_Date": "2018-08-19", "Hour_of_day": 17, "log_count": 606}
{"creation_Date": "2018-08-19", "Hour_of_day": 14, "log_count": 1328}
{"creation_Date": "2018-08-19", "Hour_of_day": 20, "log_count": 363}
我得到的流文件内容:
{
"type": "record",
"name": "demo_schema",
"fields":
[
{ "name": "creation_Date", "type": "string"},
{ "name": "Hour_of_day", "type": "string"},
{ "name": "log_count", "type": "string"}
]
}
我需要什么:
creation_Date,Hour_of_day,log_count
2018-08-16,0,3278
希望我很详细地解释了这种情况,如果有人可以帮助更正配置以使我获得完整的数据,我将不胜感激。预先谢谢你!
答案 0 :(得分:3)
您正遇到此NIFI-4456错误,并且已从NiFi-1.7 版本开始已修复。
要解决此问题:
1。将SplitText processor
与split line count =1
一起使用
2。然后使用MergeContent/MergeRecord
处理器(使用碎片整理作为合并策略),并作为有效的json消息数组
如果使用的是Merge Record处理器,则使用Reader和Writer控制器 服务必须采用Json格式。
3。然后将合并关系提供给ConvertRecord
处理器。
从 NiFi-1.7 + 版本开始,我们无需在JsonTreeReader控制器服务中配置任何新增功能,因为 NiFi能够按行格式读取json 也可以。
更新:
合并内容配置:
如果我们使用的是MergeContent处理器,请按照以下屏幕截图所示的方式配置处理器。
定界符策略
Text
标题
[
脚
]
分界符
,
此外,我建议使用 MergeRecord处理器而不是MergeContent处理器,它将负责创建有效的json消息数组。