首页 > 解决方案 > Apache Nifi - ConvertJSONToSQL - JSON 没有所需列的值

问题描述

我正在尝试使用我在网上看到的教程,这是它的模板:

在此处输入图像描述

虽然模板以将 CSV 转换为 JSON 结束,但我想继续将其转储到 MySQL 表中。所以我创建了一个新的处理器“ConvertJSONToSQL”。以下是它的属性:

在此处输入图像描述

这些是控制器服务:

在此处输入图像描述

当我运行它时,我收到以下错误:

在此处输入图像描述

这是示例输入文件:

在此处输入图像描述

这是 MySQL 表结构:

在此处输入图像描述

生成的示例 JSON 如下所示:

[{
    "id": 1,
    "title": "miss",
    "first": "marlene",
    "last": "shaw",
    "street": "3450 w belt line rd",
    "city": "abilene",
    "state": "florida",
    "zip": "31995",
    "gender": "F",
    "nationality": "US"
},
{
    "id": 2,
    "title": "ms",
    "first": "letitia",
    "last": "jordan",
    "street": "2974 mockingbird hill",
    "city": "irvine",
    "state": "new jersey",
    "zip": "64361",
    "gender": "F",
    "nationality": "US"
}]

我不明白错误描述。没有名为“CURRENT_CONNECTIONS”的字段,请在此处输入您的信息。

标签: apache-nifi

解决方案


在您的情况下,您希望使用PutDatabaseRecord 处理器而不是 ConvertJSONToSQL。这是因为ConvertRecord - CSVtoJSON的输出是一个面向记录的流文件(即,包含多个记录和定义的模式的单个流文件)。ConvertJSONToSQL,从其文档中,需要一个 JSON 元素:

传入的 FlowFile 应该是“扁平”JSON 消息,这意味着它由单个 JSON 元素组成,每个字段映射到一个简单类型

面向记录的处理器设计为在对结构化数据进行操作的数据流中协同工作。它们确实需要为流文件中的数据定义(或推断)架构,这就是控制器服务在您的情况下所做的事情,但它们的强大之处在于它们允许您在一个文件中编码/解码、操作和操作多个记录单流文件,效率更高!

可能有用的其他资源:


推荐阅读