当前位置: 首页 > 知识库问答 >
问题:

NiFi中的JoltTransformJSON处理器(没有任何父标签的json)

况胡媚
2023-03-14

我需要使用 Nifi 中的 JoltTransformJSON 转换 JSON 数据,这是我用于转换的规范:

[{
"operation": "shift",
"spec": {
    "*": {
        "Header": {
            "readOn": "created_date_time",
            "fileName": "readFile"
        },
        "Data": {
            "id": "Id",
            "first_name": "First_Name",
            "last_name": "Last_Name",
        }
    }
}}]

我的输入数据:

[{
"Header": {
    "readOn": "2017/04/18 10:55:05",
    "fileName": "sample1.csv",
    "recordNum": 1
},
"Data": {
    "last_name": "Martin",
    "id": 21,
    "first_name": "Clarence"
}
}, {
"Header": {
    "readOn": "2017/04/18 10:55:05",
    "fileName": "sample.csv",
    "recordNum": 2
},
"Data": {
    "last_name": "Graham",
    "id": 22,
    "first_name": "Walter"
}
}]

输出我得到的内容:

{
"created_date_time": ["2017/04/18 10:55:05", "2017/04/18 10:55:05"],
"readFile": ["sample1.csv", "sample2.csv"],
"Id": [21, 22],
"First_Name": ["Clarence", "Walter"],
"Last_Name": ["Martin", "Graham"]
}

所需的输出:

[{
"recordNum": 1,
"Header": {
    "created_date_time": "2017/04/18 10:55:05",
    "readFile": "getusroi.csv"
},
"Data": {
    "Last_Name": "Martin",
    "Id": 21,
    "First_Name": "Clarence"
}
}, {
"recordNum": 2,
"Header": {
    "created_date_time": "2017/04/18 10:55:05",
    "readFile": "getusroi.csv"
},
"Data": {
    "Last_Name": "Graham",
    "Id": 22,
    "First_Name": "Walter"
}
}]

问:有人能指导我在哪里我需要改变我的震动规格,以实现所需的转换输出。

共有1个答案

闽涵蓄
2023-03-14

诀窍是沿着树往回走,直到到达数组中的元素,然后可以在目标中引用该索引。试试这个规格:

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "Header": {
          "recordNum": "[&2].recordNum",
          "readOn": "[&2].&1.created_date_time",
          "fileName": "[&2].&1.readFile"
        },
        "Data": {
          "id": "[&2].&1.Id",
          "first_name": "[&2].&1.First_Name",
          "last_name": "[&2].&1.Last_Name"
        }
      }
    }
  }
]
 类似资料:
  • NiFi在JOLT处理器中抛出了一个错误--尽管在“高级”处理器接口中的测试工作完美无缺! 以前有人遇到过这种错误吗?

  • 我需要将输入日期更改为SQL友好格式,以便将其插入到数据库中。当我试图插入到DB时,imported_at和processed_at都出现错误。 我的流:jolttransformjson->convertjsontosql->PutSql 输入:

  • 我有一个JoltTransformJSON处理器。我想使用FlowFile属性(包含Jolt规范)作为规范。 当我尝试这样做时,会出现验证错误“提供的JSON规范不是有效的JSON格式”。 我用的是NiFi 1.6

  • 在apache nifi 1.10源代码中,我可以在nifi-nar-bundles/nifi-druid-bundle/nifi-druid-processors/src/main/java/org/apache/nifi/processors/druid/PutDruidRecord.java中找到PutDruidRecord代码 但是,我在nifi 1.10ui nifi画布中找不到这个处理

  • 我在运行FetchElasticSearch处理器时出现了奇怪的错误,下面是错误。 FetChelasticSearch[ID=F2B2FEE3-B940-4A73-8A28-0436E765C9A2]无法读取到Elasticsearch中,原因是没有配置的节点可用:[{#Transport#-1}{127.0.0.1}{localhost/127.0.0.1:9500}],这可能表示配置错误(主

  • 我正在调试一个HiveProcessor,它遵循官方的PutHiveStreaming处理器,但它写入的是Hive2.x,而不是3.x。该流在Nifi cluster 1.7.1中运行。尽管发生此异常,但数据仍被写入配置单元。 例外情况是: 有人做过类似的事吗?或者有没有更简单的方法来调试自定义处理器?