kettle从入门到精通 第九十四课 ETL之kettle MySQL Bulk Loader大批量高性能数据写入

1、在使用kettle时如果对表输出性能要求,可以考虑用mysql 批量加载步骤,该步骤可以实现每秒5万+的数据同步(该数据仅是基于我本人的笔记本,若是服务器则效率更高),如下图所示:

2、原理

知其然知其所以然,之所以MySQL Bulk Loader速度如此之快是因为MySQL 批量加载器使用"LOAD DATA INFILE 'FIFO 文件' INTO TABLE ...."语句,将数据从 Kettle 内部流式传输到一个命名管道,再将其导入到数据库中。

关于所使用命令的更多信息,可在 MySQL 参考文档中查找:LOAD DATA INFILE语法。感兴趣的小伙伴可以查看mysql官方文档进一步学习,如下图所示:

3、上DEMO

本次使用的步骤有生成步骤、增加序列、 字段拼接、MySQL Bulk Loader四个步骤。

生成步骤:模拟生成100万条数据。

增加序列:生成唯一键。

字段拼接:修改生成的name字段。

MySQL Bulk Loader:将数据从 Kettle 内部流式传输到一个命名管道,再将其导入到mysql数据库中。注意windows不支持命名管道,mac和linux是支持的。

前三个步骤使用比较简单,今天重点介绍下MySQL Bulk Loader步骤,配置如下图所示:

Fifo文件:这是用作命名管道的 FIFO 文件。如果该文件不存在,将使用 `mkfifo` 命令创建它,并使用 `chmod 666` 命令设置权限(这就是它在 Windows 系统中无法使用的原因)。

字段之间的分隔符:字段的分隔符。(若未指定,默认使用制表符。)

封闭符:用于字符串的定界符。来指定包裹字符串字段的符号,比如常见的引号 `"` 或单引号 `'` 等。

逃逸符:如果字段中包含定界符,则使用转义字符对其进行转义。

字符集:所使用的字符集(可选)。

批量提交行数:每x笔数据一起提交。

与已有键值重复时替换:如果勾选此项,"REPLACE" 将被添加到命令中。若你进行了这样的设置,输入的行将替换现有的行。换句话说,那些主键或唯一索引的值与现有行相同的行将被替换。

与已有键值重复时替换:如果勾选该选项,"IGNORE" 会被添加到命令中。若你进行了此设置,输入行中唯一键值与现有行重复的行将被跳过。

要加载的字段:设置数据库字段和流字段的映射关系,以及字段的格式化,如下图所示:

4、调试

1)保存&运行,果不其然出错了,如下图所示:

2)从报错的信息来看执行LOAD DATA INFILE 命令需要对数据库进行配置。 需要设置mysql服务器的local_infile变量。

通过SHOW VARIABLES LIKE 'local_infile';命令查看发现该参数处于关闭状态,

找到 MySQL 的配置文件(在 Linux 系统中通常是 /etc/my.cnf 或者 /etc/mysql/my.cnf,在 Windows 系统中可能是 my.ini),使用文本编辑器打开,添加或修改如下内容,然后重启mysql服务:

mysqld

local-infile = 1

在此查看该变量时已经处于开启状态。

3)重新运行转换依然抱错,这时候仔细查看发现说的是客户端和服务器端都得开启 local_infile 功能。

在kettle中编辑数据库连接,设置allowLoadLocalInfile=true即可解决此问题,如下图所示:

设置好allowLoadLocalInfile参数后重新运行,可以正常work,happy!!!

相关推荐
西格电力科技42 分钟前
面向工业用户的绿电直连架构适配技术:高可靠与高弹性的双重设计
大数据·服务器·人工智能·架构·能源
beijingliushao2 小时前
105-Spark之Standalone HA环境搭建过程
大数据·spark
五阿哥永琪2 小时前
Git 开发常用命令速查手册
大数据·git·elasticsearch
数字会议深科技3 小时前
深科技 | 高端会议室效率升级指南:无纸化会议系统的演进与价值
大数据·人工智能·会议系统·无纸化·会议系统品牌·综合型系统集成商·会议室
xiaok3 小时前
GROUP BY进阶用法
mysql
jinxinyuuuus3 小时前
vsGPU:硬件参数的数据仓库设计、ETL流程与前端OLAP分析
前端·数据仓库·etl
RestCloud3 小时前
异步 vs 同步:ETL在任务调度中的架构选择
etl·数据处理·数据集成·etlcloud·数据同步·任务调度·异步数据处理
李慕婉学姐3 小时前
【开题答辩过程】以《基于Android的健康助手APP的设计与实现》为例,不知道这个选题怎么做的,不知道这个选题怎么开题答辩的可以进来看看
android·java·mysql
容智信息3 小时前
容智Report Agent智能体驱动财务自动化,从核算迈向价值创造
大数据·运维·人工智能·自然语言处理·自动化·政务
qq_12498707533 小时前
基于springboot健康养老APP的设计与实现(源码+论文+部署+安装)
java·spring boot·后端·mysql·微信小程序·毕业设计