nifi ConvertRecord JSON 到 CSV 只得到一条记录?

nifi ConvertRecord JSON to CSV getting only single record?

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

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

源json数据:

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

流量:

ConvertRecord 处理器配置:

JsonTreeReader 控制器配置:

CSVrecordsetWriter 控制器配置:

AvroSchemaRegistry 控制器配置:

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

我需要的:

creation_Date,Hour_of_day,log_count
2018-08-16,0,3278
2018-08-17,4,278
2018-08-18,10,6723

希望我能详细说明情况,如果有人能帮助更正配置以便我获得完整数据,我将不胜感激。提前致谢!

您正面临这个 NIFI-4456 错误并且已修复从 NiFi-1.7 版本开始。

To work around this issue:

1.use SplitText processorsplit line count =1

2.Then 使用 MergeContent/MergeRecord 处理器(使用碎片整理作为合并策略)并生成 有效的 json 消息数组

如果您正在使用 Merge Record 处理器,那么 Reader 和 Writer 控制器 服务需要采用 Json 格式。

3.Then 将 merged 关系提供给 ConvertRecord 处理器。

流量:

NiFi-1.7+版本开始,我们不需要在JsonTreeReader控制器中配置任何东西new/additional服务 NiFi 也能够读取 json 每行格式

更新:

MergeContent 配置:

如果我们使用 MergeContent 处理器,请像下面的屏幕截图所示那样配置处理器。

Delimiter Strategy Text

Header [

Footer ]

Demarcator ,

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