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

相关推荐
min1811234561 天前
PC端零基础跨职能流程图制作教程
大数据·人工智能·信息可视化·架构·流程图
静听松涛1331 天前
中文PC端多人协作泳道图制作平台
大数据·论文阅读·人工智能·搜索引擎·架构·流程图·软件工程
kaico20181 天前
MySQL的索引
数据库·mysql
黄焖鸡能干四碗1 天前
智能制造工业大数据应用及探索方案(PPT文件)
大数据·运维·人工智能·制造·需求分析
世岩清上1 天前
乡村振兴主题展厅本土化材料运用与地域文化施工表达
大数据·人工智能·乡村振兴·展厅
资生算法程序员_畅想家_剑魔1 天前
Mysql常见报错解决分享-01-Invalid escape character in string.
数据库·mysql
说私域1 天前
短视频私域流量池的变现路径创新:基于AI智能名片链动2+1模式S2B2C商城小程序的实践研究
大数据·人工智能·小程序
MM_MS1 天前
Halcon图像锐化和图像增强、窗口的相关算子
大数据·图像处理·人工智能·opencv·算法·计算机视觉·视觉检测
霖霖总总1 天前
[小技巧14]MySQL 8.0 系统变量设置全解析:SET GLOBAL、SET PERSIST 与 SET PERSIST_ONLY 的区别与应用
数据库·mysql
alonewolf_991 天前
深入剖析MySQL索引底层:B+树、联合索引与跳跃扫描原理全解
数据库·b树·mysql