如何计算NiFi中JSON对象流文件的记录数?

时间:2019-06-18 01:30:50

标签: apache-nifi

我正在调用一个API,该API以流文件的形式返回JSON对象作为响应的主体。我要计算流文件中的总记录。

我尝试过像CalculateRecordStats这样的记录处理器需要一个记录读取器,而又需要一个模式。但是我没有架构。那么,有没有更好的方法呢?

{
"result":[
    {
        "key1": "value1",
        "key2": "value2"
    },
    {
        "key1": "value1",
        "key2": "value2"
    }
]
}

这是api响应主体返回的示例JSON。记录是列表中的项目,是“结果”键的值

在上面的示例中,有2条记录(列表中有2条)。这就是我要计算的。

2 个答案:

答案 0 :(得分:1)

calculating the size of an array有一个Jolt规范,但是我不确定该操作是否在NiFi当前使用的Jolt库版本中可用。

[
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "keyLength": "=size(@(1,key))"
    }
  }
]

使用记录读取器,您应该能够创建JsonTreeReaderJsonPathReader并将模式访问策略设置为推断为此目的实时进行。

答案 1 :(得分:0)

感谢安迪的回复。我从Hortonworks Community Discussion找到了另一个答案,我觉得这很简单。

这是使用“ EvaluateJSONPath”处理器并设置新的流文件属性

resultCount = $.result.length()

稍后可以验证此属性$ {resultCount}的正确性。