Nifi Jolt将Json转换为数组

问题描述

我有来自Kafka的Json文件,我需要使用Apache Nifi将其插入到Hive表中。 Json具有多个嵌套字段或嵌套字段数组。 Hive表的架构以这样的方式定义:我们可以插入(然后查询)这些嵌套字段和嵌套数组。

我的问题是某些字段是某些消息中的数组,而它们却是其他消息中的简单Json结构:

情况1:

"some_field" : {
  "nested_field" : {
    "tag1" : "value","tag2" : "..."
  }
}

情况2:

"some_field" : {
  "nested_field" : [
  {
    "tag1" : "value","tag2" : "..."
  },{
    "tag1" : "value","tag2" : "..."
  }]
}

Hive表模式只能在其中一种情况下工作,而不能同时适用于两种情况。

看到有很多类似情况2的消息,我正在考虑使用Jolt将情况1转换为情况2,而数组中只有一个元素。使用Jolt可以轻松实现:

[
  {
    "operation": "shift","spec": {
      "some_field": {
        "nested_field": {
          "*": "some_field.nested_field[0].&"
          }
      }
  }
]

但是随后它弄乱了数组形式的消息。

是否有某种方法可以处理情况1而又不弄乱情况2?

或者,是否可以过滤掉与给定模式不匹配的流文件? (我知道我可以使用Jolt筛选出与架构不匹配的字段,但这并不理想)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)