Apache Nifi-ConvertJSONToSQL-JSON的必需列没有值

时间:2018-07-06 06:35:16

标签: apache-nifi

我正在尝试尝试在线上遇到的教程,这是它的模板:

enter image description here

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

enter image description here

这些是控制器服务:

enter image description here

运行此命令时,出现以下错误:

enter image description here

以下是示例输入文件:

enter image description here

这是MySQL表结构:

enter image description here

生成的示例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”的字段,请在这里输入您的信息。

1 个答案:

答案 0 :(得分:3)

在您的情况下,您想使用PutDatabaseRecord processor而不是ConvertJSONToSQL。这是因为 ConvertRecord-CSVtoJSON 的输出是面向记录的流文件(即,包含多个记录和已定义模式的单个流文件)。从其documentation开始,ConvertJSONToSQL会期望一个JSON元素:

  

传入的FlowFile应该是“平面” JSON消息,这意味着它包含一个JSON元素,并且每个字段都映射到一个简单的类型

面向记录的处理器旨在在对结构化数据进行操作的数据流中协同工作。它们确实需要为流文件中的数据定义(或推断)模式,这就是Controller Services在您的情况下所做的事情,但是强大的功能是它们使您可以编码/解码,操作和操作多个记录。单一流文件,效率更高!

可能有用的其他资源