apache-nifi - 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”的字段,请在此处输入您的信息。
解决方案
在您的情况下,您希望使用PutDatabaseRecord 处理器而不是 ConvertJSONToSQL。这是因为ConvertRecord - CSVtoJSON的输出是一个面向记录的流文件(即,包含多个记录和定义的模式的单个流文件)。ConvertJSONToSQL,从其文档中,需要一个 JSON 元素:
传入的 FlowFile 应该是“扁平”JSON 消息,这意味着它由单个 JSON 元素组成,每个字段映射到一个简单类型
面向记录的处理器设计为在对结构化数据进行操作的数据流中协同工作。它们确实需要为流文件中的数据定义(或推断)架构,这就是控制器服务在您的情况下所做的事情,但它们的强大之处在于它们允许您在一个文件中编码/解码、操作和操作多个记录单流文件,效率更高!
可能有用的其他资源:
- 一起有效使用面向记录的处理器的介绍,例如 ConvertRecord 和 PutDatabaseRecord: https ://blogs.apache.org/nifi/entry/record-orientated-data-with-nifi
- 包含 PutDatabaseRecord 的示例:https ://gist.github.com/ijokarumawak/b37db141b4d04c2da124c1a6d922f81f
推荐阅读
- regex - 如何使用交替和替换来执行 Perl 正则表达式
- javascript - 带有特殊字符的正则表达式问题
- html - 在使用 BEM(块、元素、修饰符)命名约定时,是否必须将类名应用于 HTML 中的每个元素?
- php - 响应必须包含 AMP-Access-Control-Allow-Source-Origin 标头?
- php - Laravel 错误:函数 Illuminate\Database\Eloquent\Model::setAttribute() 的参数太少
- spring-boot - Springboot如何锁定libs的版本,比如Rails的Gemfile.lock?
- c# - 创建按钮并将其放置在某些 xaml 窗口上而不使用 xaml 代码
- php - 尝试使用 PHP 根据服务器时间显示不同的横幅图像
- pagespeed-insights - 如何从我的国家获得访问结果?
- html - XSL:如何在样式表中使用 HTML 标签?