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

相关推荐
2501_924879266 分钟前
客流特征识别误报率↓76%!陌讯多模态时序融合算法在智慧零售的实战解析
大数据·人工智能·算法·目标检测·计算机视觉·视觉检测·零售
weixin_456588151 小时前
【java面试day19】mysql-优化
java·mysql·面试
eqwaak01 小时前
科技信息差(8.26)
大数据·开发语言·人工智能·编辑器
念夏沫1 小时前
“华生科技杯”2025年全国青少年龙舟锦标赛在海宁举行
大数据·人工智能·科技
TT哇1 小时前
@[TOC](MySQL)MySQL经典练习题(详解)
数据库·mysql
白鲸开源1 小时前
DolphinScheduler API与SDK实战:版本管理、系统集成与扩展全指南
大数据·api·ai编程
fanstuck2 小时前
亚马逊云科技免费套餐新政解析与实战:数据分析与可视化平台
大数据·科技·数据分析·数据可视化·aws
小李飞刀李寻欢2 小时前
MongoDB /redis/mysql 界面化的数据查看页面App
redis·mysql·mongodb
Pure_Eyes2 小时前
mysql 执行sql流程概述
数据库·sql·mysql
望获linux4 小时前
【实时Linux实战系列】基于实时Linux的音频实时监控系统
大数据·linux·服务器·网络·数据库·操作系统·嵌入式软件