mysql运维,如何利用kettle导入千万级数据,并做好配置优化

之前写过mysql导入千万数据的几种方法,参考文章mysql千万级数据量插入的几种方案耗时,看完就知道如何选择

现在再讲讲第三方ETL工具kettle,毕竟这工具在企b L w F 9业中也是比较常用的数据处理工具。

优化配置后,效率也挺高

mysql运维,如何利用kettle导入千万级数据,并做好配置优化


环境准备

在虚拟机中安装好mysql8.0.19,存储引擎选择innoDB,并新增一[ m N |个数据库,并创建t_user表Z L m b h #,为简单起见,就2个字段,id和name;为减少网络可能存在问题。不需要建立索引u | 4 9 ^,毕竟导入大数据,有索引的话,k D 6 h M =还需而外维护,那性能更慢。

create table t_user(id inC O lt, nz o ~ M B g *ame varchar(20));

可到官网下载KETTLE,国内网站只更新到8.0,我下了最新版本《pdi-ce-9.0.0.0-423.zip》,使用方法一样,解压就能用,当然它是java编写的,所以需要jdk支持,测试过,只支持jdk1.8,jdk11以: 9 9 m 2 & Y上不支持M R K D。所以我x - z :改了我本机的jdk环境。

mysql运维,如何利用kettle导入千万级数据,并做好配置优化

具体操作

  • kettle可以放在某个本机目录下,然后解压如图所示

mysql运维,如何利用kettle导入千万级数据,并做好配置优化

kettle启y H X A $ 4 % B动,windowK 6 ~ t + y M n Ss下执行spoon.bat,mac下执行spoon.sh,spoon是kettle的图形化界面。

我这是mac机器,所以执行以下命令

./spoon.sh

mysql运维,如何利用kettle导入千万级数据,并做好配置优化

正常? z E G k c q的话就能看到启动页面

mysql运维,如何利用kettle导入千万级数据,并做好配置优化

  • 新建7 7 !一个转换。

在输入选项里面选择文本输入,文本输入可以理解为数据源,把这个数据源导入到mysql当中,文本文件数据类似下图,有1000万条数据,我是用程序自动生成。简单起见,只有id和name字段。

mysql运维,如何利用kettle导入千万级数据,并做好配置优化

mysql运维,如何利用kettle导入千万级数据,并做好配置优化

拖拽文本输3 1 g m V入控件,并做一些简单配置,因为我这tX C R N b n S qxt文件用了逗号分隔,所以只要7 K : v再内容选项中P 0 j d设置分隔符,其余保持默认就好了

mysql运维,如何利用kettle导入千万级数据,并做好配置优化

mysql运维,如何利用kettle导入千万级数据,并做好配置优化

在字段选项生成字段

mysql运维,如何利用kettle导入千万级数据,并做好配置优化

  • 新增一个表输出,此项就是需要把数据导入的目标。因为我们需要导入到v = M p b mmysql当中,所以需要把me Z d p % V o hysqlV -驱动导入到kettle的安装目录的lib包下,需要重启kettle。

mysql运维,如何利用kettle导入千万级数据,并做好配置优化

mysql运维,如何利用kettle导入千万级数据,并做好配置优化

$ z + A K置数据源,选择mysql,配置比较简单

mysql运维,如何利用kettle导入千万级数据,并做好配置优化

最后,在文本输~ Z - @ a L入和表输出之间建立一个关联关系,有个专门的术语-跳,表示数据的流向关系,从文本获取数据源,传到数据库表中a W 2。大概的配置就完成了,之后再执行前,做一些优化工作,提高性能。

mysql运维,如何利用kettle导入千万级数据,并做好配置优化

优化建议

在db连接选! z C 3 z ? _ ~项中配置参数,目的是使用批量插入的方式,并且利用压缩数据方式,提高传递到服务器的效率

useServerPrepStmts=false

rewriteBm d @ R 4 r HatchedStatements=true

useCompressi3 * _ K { Hon=true

mysql运维,如何利用kettle导入千万级数据,并做好配置优化

因为是大批量数据迁移,d I O 0 t 5 c ;主要影响抽取速度的是表输出,因此目标数据数据库我开了10个线程进行写入。这里注意,我文本输入1000万数据都在一个K 9 Q c V I f l文本中,不需要开线程,否则会重复读取数据,当然可以F f f { R %建立多个输入,这样可以重复利用cpu。

mysql运维,如何利用kettle导入千万级数据,并做好配置优化

这样就可以执行数据导; k H a ^ l f入了。

mysql运维,如何利用kettle导入千万级数据,并做好配置优化

最终结果每秒读取11万条数据,最终完成1000万数据导入,2分钟不到。效率同mysqlimport命令,当然理论来说,jdbc效率是没有原生导入命令O - z - ? E高的,所以不要指望kettle按秒来导入。

上一篇

MySQL在并发场景下的问题及相关解决思路

下一篇

NEDC续驶里程突破700km,高续驶左右纯电动汽车成败

你也可能喜欢

  • 暂无相关文章!

发表评论

您的电子邮件地址不会被公开。 必填项已用 * 标注

提示:点击验证后方可评论!

插入图片
返回顶部