【转】阿里出品的ETL工具dataX初体验

原文连接:https://www.imooc.com/article/15640python

来源:慕课网mysql

 

个人毕设选择了大数据方向的题目。大数据的第一步就是要拿到足够的数据源。现实状况中咱们须要的数据源分布在不一样的业务系统中,而这些系统每每是异构的,并且咱们的分析过程不能影响原有业务系统的运行。为了把不一样的数据归集起来,我开始了解和接触ETL。本篇介绍阿里的开源ETL工具dataX。
<!-- more -->
ETL&&经常使用工具linux

 ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数据历来源端通过抽取(extract)、转换(transform)、加载(load)至目的端的过程。git

个人理解就是从业务系统中根据所要分析的主题,创建数据仓库的过程。大数据的应用已经很是普遍,ETL过程如今已经发展成为一个比较专门的职业,相关联的包括ETL工程师,BI分析师等等。

数据的迁移和集成都须要ETL来实现,通常来讲在数据仓库的开发过程当中ETL会占到70%到80%的时间,我了解到的ETL工具包括:

github

  1.     Kettle是一个开源的ETL工具,优势是免费,资料挺多。功能挺全面的,我折腾过一段时间,感受不是很符合须要,想要在web上使用确实会有点困难,也多是了解不深。
  2.     DataStage,这是IBM为其配套的DB2开发的ETL工具,也能够用于其它数据库数据的集成,这个工具不错,银行用的挺多的。
  3.     Informatica,这是美国的一个数据集成公司的开发的数据集成工具,有图形界面。
  4.     sqoop,这个是hadoop生态里的一个数据导入工具,可是它依赖于hadoop环境,也有点不符合我如今阶段的须要。


固然还有其余挺多,毕竟对于数据的处理需求从信息机书诞生开始就一直存在。上面提到的这些工具比较强大,功能全面,但可能目前知识技能有限,驾驭起来不是很方便,折腾过一段时间后放弃了。咱们经常使用的一些数据库工具也会带有导入导出功能,经过文本文件,csv文件等都能完成一个数据中专过程,但相对比较麻烦,并且功能太少对数据处理不是很方便。

直到我去云栖大会据说了DataX ,这个简洁,高效,开箱即用的ETL工具,测试事后效率也不错,调试信息也很丰富,才发现这就是我须要的。官方介绍以下:web

DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、MaxCompute(原ODPS)、HBase、FTP等各类异构数据源之间稳定高效的数据同步功能。sql

dataX自己只是一个数据库同步框架,经过插件体系完成数据同步过程reader插件用于读入,writer插件用于写出,中间的framework能够定义transform插件完成数据转化的须要。
使用它以后,咱们的数据同步工做就简化成了:根据数据源选择对应的reader或者writer插件,填写必要的一个配置文件,一句命令搞定所有。数据库

 

dataX安装配置

    1.系统环境windows 、linux都可,其余必须的依赖包括:
        JDK(1.8)
        Python(推荐Python2.6.X)
        Apache Maven 3.x (想经过源码编译的话须要,不然直接用二进制包便可)
    2.安装
        下载安装tar包(https://github.com/alibaba/DataX)
        解压至本地某个目录,修改权限为755,进入bin目录,便可运行样例同步做业。       json

$ tar zxvf datax.tar.gz $ sudo chmod -R 755 {YOUR_DATAX_HOME} $ cd {YOUR_DATAX_HOME}/bin $ python datax.py ../job/job.json

 

        若是一切顺利就会看到样例输出,说明工具已经就绪可使用了。windows

 

配置文件介绍

他的所有使用就如同安装配置部分所说,仅仅是执行一个python脚本,传入一个json配置文件。咱们的关键工做就是定义这个json配置。在bin目录下也已经给出了样例配置,不过针对不一样的数据源仍是会有些许区别。
咱们可使用以下命令查看咱们具体须要的配置文件样例:

  python datax.py -r {YOUR_READER} -w {YOUR_WRITER} 

好比我如今须要的是从sqlserver读入,写到mysql,那么就能够尝试:
python datax.py -r sqlservereader -w mysqlwriter
输出以下:

{ "job": { "content": [ { "reader": { "name": "sqlserverreader", "parameter": { "connection": [ { /***省略多条****/ } ], "column": ["*"], /***省略多条****/ } }, "writer": { "name": "mysqlwriter", "parameter": { "column": ['*'], "connection": [ { /***省略多条****/ } ], "password": " /***省略多条****/", "username": "root", "writeMode": "insert" } } } ], "setting": { "speed": { "channel": "5" } } } }

 

 

  •     大体也是很是容易理解的,配置数据库帐号密码,配置同步的表名列名等等信息。
  •     jdbcUrl,username,password,table,column,writeMode(insert/replace/update)等为必选项,见名知意。
  •     按照json格式填写便可,reader支持配置多个链接,只要有一个连通便可,writer只能配置一个链接。
  •     更详细的配置参考官方wiki:    https://github.com/alibaba/DataX/wiki/DataX-all-data-channels
  •     Transformer的使用见下:    https://github.com/alibaba/DataX/blob/master/transformer/doc/transformer.md

windows下乱码修复

    我把这个工具迁移到一台windows主机上使用时候看到控制台友好的中文提示竟然都变成了乱码了(话说有中文提示也是我选择他很重要的理由啊)。还好官方也给出了解决方案:
        1.打开CMD.exe命令行窗口
        经过 chcp命令改变代码页,UTF-8的代码页为65001
        ​ chcp 65001
        2.执行该操做后,代码页就被变成UTF-8了。可是,在窗口中仍旧不能正确显示UTF-8字符。
        3.修改窗口属性,改变字体
        ​ 在命令行标题栏上点击右键,选择"属性"->"字体",将字体修改成True Type字体"Lucida Console",而后点击肯定将属性应用到当前窗口。

性能测试

单核8G的虚拟机,这个速度还算能够吧,多是数据读写不在同一台机子上网络传输也消耗了很多时间。

相关文章
相关标签/搜索