NiFi JoltTransformJson 只输出第一条记录
NiFi JoltTransformJson outputs only first record
我正在向 NiFi JoltTransformJSON 发送一些记录,例如:
{"uid":"x1","timestamp_ms":1419717816375}
{"uid":"x2","timestamp_ms":1419717816376}
...
它们是通过 ComsumeKafkaRecord 来的,它的 RecordWriter 是配置了 "One line per object" 的 JsonRecordSetWriter。我通过数据出处验证,当我向 Kafka 发送 5 条记录时,有 5 条记录从中出来。
Shift 变换的颠簸规范是
{
"*": "&0",
"timestamp_ms": "timestamp"
}
所以我只想重命名一个字段。我在高级部分验证了此规范按要求更改了我的 json。
但是当我启动所有组件并发送 5 条消息时,我只从 JoltTransformJson 获得第一条消息 - 已通过数据来源验证。
{"uid":"x1","timestamp":1419717816375}
这是怎么回事?
更新:原来我不得不使用JoltTransformRecord,然后它如我所料,即5条消息输入,5条输出。
但我仍然很困惑是什么让 JoltTransformJson 表现得那样?
之所以会这样,是因为您将数据(每行一条记录)引用为 JSON 而您的数据不是 JSON。如果是 JSON,那么它至少会以 [] 开头和结尾,并且每一行(最后一行除外)都以逗号结尾。
由于 JoltTransformJSON 只接受 JSON,它的行为就是这样。
关于您的编辑,JoltTransformRecord 知道如何将记录单独处理为不同的 JSON 对象,这就是它使用它的原因。
我正在向 NiFi JoltTransformJSON 发送一些记录,例如:
{"uid":"x1","timestamp_ms":1419717816375}
{"uid":"x2","timestamp_ms":1419717816376}
...
它们是通过 ComsumeKafkaRecord 来的,它的 RecordWriter 是配置了 "One line per object" 的 JsonRecordSetWriter。我通过数据出处验证,当我向 Kafka 发送 5 条记录时,有 5 条记录从中出来。
Shift 变换的颠簸规范是
{
"*": "&0",
"timestamp_ms": "timestamp"
}
所以我只想重命名一个字段。我在高级部分验证了此规范按要求更改了我的 json。
但是当我启动所有组件并发送 5 条消息时,我只从 JoltTransformJson 获得第一条消息 - 已通过数据来源验证。
{"uid":"x1","timestamp":1419717816375}
这是怎么回事?
更新:原来我不得不使用JoltTransformRecord,然后它如我所料,即5条消息输入,5条输出。
但我仍然很困惑是什么让 JoltTransformJson 表现得那样?
之所以会这样,是因为您将数据(每行一条记录)引用为 JSON 而您的数据不是 JSON。如果是 JSON,那么它至少会以 [] 开头和结尾,并且每一行(最后一行除外)都以逗号结尾。
由于 JoltTransformJSON 只接受 JSON,它的行为就是这样。
关于您的编辑,JoltTransformRecord 知道如何将记录单独处理为不同的 JSON 对象,这就是它使用它的原因。