mysql etl工具干什么的_基于现在接触的ETL工具(datax和kettle)做个小总结
发布日期:2021-06-24 17:00:50 浏览次数:2 分类:技术文章

本文共 2775 字,大约阅读时间需要 9 分钟。

现阶段需要做数据库同步工作,目前调研了两个工具datax和kettle

目前虽然环境使用的是kettle+jenkins调度平台方案,但是多多少少会有一些不太令人满意的地方,但应该算是满足大部分需求了,先暂时这样实现

这两者各有优缺点,基本的就不总结了。现在说说一些关键点:

基本方面:

1.datax适合做数据同步工作;kettle适合数据清洗,转换工作

目前成型的可视化界面,datax推荐datax web,kettle后期维护用的界面推荐jenkins/kettle-manager简单

2.datax对于数据库压力比较小,全量读取速度优于kettle

3.对于一些方案的可行性,小数据量的选择全量对比,10w数据量大概3s完成插入更新全量抽取过程,还是比较快的。小数据量的情况下差别不大

4.目前生产可行方案可以选择datax+datax web/kettle

5.具体一些方案https://blog.csdn.net/inthat/article/details/84146346(虽然是datax的,但是kettle也适用)

6.日志方案是对于大量数据的最优选择,mysql用maxwell抓取日志或者上边提供的方案,oracle用ogg,sqlserver目前不清楚需要再找

7.保证kettle后期稳定的情况下用windows自带的定时任务或者Linux中用crontab,不过后续的jenkins完全能胜任

8.部署kettle到服务器上有可能提示少包的问题(具体部署步骤https://www.jianshu.com/p/fa398f104e5d   或者   https://www.cnblogs.com/yangp/p/11410137.html)

贴上链接:wget ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home:/matthewdva:/build:/EPEL:/el7/RHEL_7/x86_64/webkitgtk-2.4.9-1.el7.x86_64.rpm

yum install webkitgtk-2.4.9-1.el7.x86_64.rpm

或者后续的包可以对应下载http://rpmfind.net/linux/rpm2html/search.php?query=libwebkitgtk-1.0.so.0%28%29%2864bit%29&submit=Search+...&system=&arch=

9.docker部署mysql

https://blog.csdn.net/weixin_40693633/article/details/84074459

10.部署jenkins

https://blog.csdn.net/qq_35868412/article/details/89475386(这里比较详细)

进行配置文件配置,

在 etc/sysconfig/jenkins里 改端口

https://blog.csdn.net/u013232219/article/details/104370953

#修改jenkins镜像文件

cd ~/.jenkins/updates

sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json

一些小坑:mysql 8.0驱动jar包方面更换,导致不能用,需要注意驱动

#所有命令找不到

export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

#刷新环境变量:

source /etc/profile

#给脚本赋予权限:

chmod +x ./data-integration/*.sh

datax用的python版本要注意,2.6+版本和3.0+版本有语法差别(记得是括号问题)

centos 7可以通过添加打印机方式避免开机总是黑屏

部署kettle和jenkins会存在一些坑

#书写sh脚本时候

661da73ba3a73d25f95730023f2845c4.png

在脚本里面添加

source /etc/profile即可

11.关于调度平台问题,目前如果想要放入docker容器里面然后再放入集群中有难度,使用某个服务上xxl-job调度,carte.sh方法还得提供个ip地址,或者xml文件,目前没想到怎么实现,目前可能方法可能是用docker库里的kettle镜像,自己生成一个,或者自己通过源码

生成一个docker file文件,打包完成后再进行部署

12.目前8.0版本和8.2版本有差异,生成的镜像文件再运行job文件可能存在问题,而docker库里面的8.3版本可以运行8.2版本

13.如果是从接口获取数据的方式,并且接口调用频率有限制

4df27b679e77a4e0093961e045c9af81.png

可以通过这种方式(中间加个等待时间)然后获取的也是系统时间和时间戳存放的时间中间数据量,这样可以变化的获取页数和对应的所有数据,针对接口返回404情况,可以获取唯一标识存放到临时表里,然后再遍历这个唯一标识去做二次请求,这样

8f44f251d94a1731968d141ca06ed2c7.png

如果实时更细数据量不多的情况下,其实可以用先从临时表里获取对应的404对应的唯一标识,然后先看看原数据里面有没有,如果没有的话则会进入插入更新,虽然这个组件很慢,但是对于已经在前边进行排除了,只是进行更新对比,所以实质上数据量并不大

进行全量比对方式也是可行的(目前方法只是针对目前做的东西,通用的其实还是日志的效果好,但是难度大一些,需要再研究)

重点是这几个转换方案太蠢了,步骤过多影响速度,还好现在用时间戳,并行所有job只用37-45s左右,但是数据量一大就有问题了不适合做现在或者以后的最佳方案,所以只做思路参考

14.其实清洗最优方案还是通过python去处理,或者使用data-web的方式,那个是在git上有源码,并且结合的正好是xxl-job调度平台,可以使用这个调度平台+整合数据的方案

15.自动获取字典项:https://www.cnblogs.com/majinju/p/5002626.html

16.关于部署到阿里云服务器的上的问题,一定一定要添加    安全组,不然会报错,并且CONVERT_TO_NULL是可以使用。 并且有两个方向,一个入一个出

后续继续补充

转载地址:https://blog.csdn.net/weixin_33983809/article/details/113454534 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:经纬度投影 球面墨卡托_墨卡托投影与大圆小圆皆为球面直线
下一篇:mysql union 排序问题_MySQL利用UNION连接2个查询排序失效详解

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2024年03月31日 12时22分49秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章