NiFi JoltTransformJson仅输出第一条记录

时间:2019-08-16 21:33:52

标签: json apache-nifi jolt

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

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

它们通过ComsumeKafkaRecord来,其RecordWriter是配置为“每个对象一行”的JsonRecordSetWriter。我通过数据出处证实,当我向Kafka发送5条记录时,有5条记录。

Shift转换的震动规格为

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

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

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

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

这是怎么了?

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

但是我仍然感到困惑的是,为什么JoltTransformJson会那样表现?

1 个答案:

答案 0 :(得分:1)

之所以如此,是因为您将数据(每行一条记录)引用为JSON,而数据不是JSON。如果它是JSON,则它至少应以[]开头和结尾,并且每行(最后一行除外)都以逗号结尾。

由于JoltTransformJSON仅接受JSON,因此其行为是这样的。

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

相关问题