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!!!

相关推荐
字节跳动数据平台3 小时前
代码量减少 70%、GPU 利用率达 95%:火山引擎多模态数据湖如何释放模思智能的算法生产力
大数据
得物技术5 小时前
深入剖析Spark UI界面:参数与界面详解|得物技术
大数据·后端·spark
武子康6 小时前
大数据-238 离线数仓 - 广告业务 Hive分析实战:ADS 点击率、购买率与 Top100 排名避坑
大数据·后端·apache hive
武子康1 天前
大数据-237 离线数仓 - Hive 广告业务实战:ODS→DWD 事件解析、广告明细与转化分析落地
大数据·后端·apache hive
大大大大晴天1 天前
Flink生产问题排障-Kryo serializer scala extensions are not available
大数据·flink
于眠牧北2 天前
MySQL的锁类型,表锁,行锁,MVCC中所使用的临键锁
mysql
武子康3 天前
大数据-236 离线数仓 - 会员指标验证、DataX 导出与广告业务 ODS/DWD/ADS 全流程
大数据·后端·apache hive
Turnip12024 天前
深度解析:为什么简单的数据库"写操作"会在 MySQL 中卡住?
后端·mysql
武子康4 天前
大数据-235 离线数仓 - 实战:Flume+HDFS+Hive 搭建 ODS/DWD/DWS/ADS 会员分析链路
大数据·后端·apache hive
DianSan_ERP5 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet