Nifi 从 getHbase 结果中获取特定的列值

Nifi Getting specific column value from getHbase result

我正在尝试使用 GetHBase 进程从 Hbase 获取数据,结果如下

{
  "row" : "r5",
  "cells" : {
    "cf1:ABC:" : "V1",
    "cf1:DEF" : "V2",
    "cf1:HIJ" : "V3",
    "cf1:KLM" : "V4"
  }
}

现在,我想过滤特定列的 json

预期结果 {"DEF":"V2","KLM":"V4"}

流程已尝试

GetHbase --> evaluateJsonPath

只需使用JoltTransformJSON,将Jolt Transformation DSL设置为Shift并将Jolt Specification设置为:

{
      "cells": {
        "cf1:DEF": "DEF",
        "cf1:KLM": "KLM"
      }
}

这会将您的输入 json 转换为您想要的 json。

Jolt Transform 是一个开源库,可帮助您使用其他 Json 文档作为规范来转换 Json 文档。

如果您想对它们进行参数化,可以像这样使用 NiFi 1.10.0 使用参数来实现:

{
      "cells": {
        "cf1:#{param1}": "#{param1}",
        "cf1:#{param2}": "#{param2}"
      }
}

或者将 NiFi 1.4.0+ 与 expression language and the variable registry 一起使用,如下所示:

{
      "cells": {
        "cf1:${param1}": "${param1}",
        "cf1:${param2}": "${param2}"
      }
}

所有内容都链接到文档,因此您可以阅读所有内容:)