【问题标题】:NiFi JoltTransformJson outputs only first recordNiFi JoltTransformJson 仅输出第一条记录
【发布时间】:2019-08-16 21:33:52
【问题描述】:

我正在向 NiFi JoltTransformJSON 发送一些记录,例如:

{"uid":"x1","timestamp_ms":1419717816375}
{"uid":"x2","timestamp_ms":1419717816376}
...

它们是通过 ComsumeKafkaRecord 来的,它的 RecordWriter 是 JsonRecordSetWriter,配置了“每个对象一行”。我通过数据出处验证了,当我将 5 条记录发送到 Kafka 时,有 5 条记录会从中产生。

Shift 变换的 Jolt 规范是

{
  "*": "&0",
 "timestamp_ms": "timestamp"
}

所以我只想重命名一个字段。我在“高级”部分验证了此规范按要求更改了我的 json。

但是当我启动所有组件并发送 5 条消息时,我只从 JoltTransformJson 获得第一条 - 已通过数据来源验证。

{"uid":"x1","timestamp":1419717816375}

这里有什么问题?

更新:原来我必须使用 JoltTransformRecord,然后它按我的预期进行,即 5 条消息输入,5 条消息输出。

但我仍然不明白是什么让 JoltTransformJson 表现得那样?

【问题讨论】:

    标签: json apache-nifi jolt


    【解决方案1】:

    造成这种情况的原因是您将数据(每行一条记录)称为 JSON,而您的数据不是 JSON。如果是 JSON,那么它至少会以 [] 开头和结尾,并且每一行(最后一行除外)都以逗号结尾。

    由于 JoltTransformJSON 只接受 JSON,它的行为就是这样。

    关于您的编辑,JoltTransformRecord 知道如何将记录单独处理为不同的 JSON 对象,这就是它使用它的原因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多