Nifi ConvertRecord JSON转换为CSV仅获得单个记录?

时间:2018-08-21 21:11:49

标签: hadoop apache-nifi hortonworks-data-platform

我为读取json数据设置了以下流程,并使用convertRecord处理器将其转换为csv。但是,输出流文件仅填充单个记录(我假设仅是第一条记录),而不是所有记录。

有人可以提供正确的配置吗?

源json数据:

INSERT

流程: enter image description here

ConvertRecord处理器配置: enter image description here

JsonTreeReader控制器配置: enter image description here

CSVrecordsetWriter控制器配置: enter image description here

AvroSchemaRegistry控制器配置: enter image description here

{"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

希望我很详细地解释了这种情况,如果有人可以帮助更正配置以使我获得完整的数据,我将不胜感激。预先谢谢你!

1 个答案:

答案 0 :(得分:3)

您正遇到此NIFI-4456错误,并且已从NiFi-1.7 版本开始已修复。

  

要解决此问题:

1。将SplitText processorsplit line count =1一起使用

2。然后使用MergeContent/MergeRecord处理器(使用碎片整理作为合并策略),并作为有效的json消息数组

如果使用的是Merge Record处理器,则使用Reader和Writer控制器  服务必须采用Json格式。

3。然后将合并关系提供给ConvertRecord处理器。

流量: enter image description here

NiFi-1.7 + 版本开始,我们无需在JsonTreeReader控制器服务中配置任何新增功能,因为 NiFi能够按行格式读取json 也可以。

更新

合并内容配置:

如果我们使用的是MergeContent处理器,请按照以下屏幕截图所示的方式配置处理器。

enter image description here

  

定界符策略Text

     

标题[

     

]

     

分界符,

此外,我建议使用 MergeRecord处理器而不是MergeContent处理器,它将负责创建有效的json消息数组。