【转】阿里出品的ETL工具dataX初体验
原文链接:https://www.imooc.com/article/15640
来源:慕课网
我的毕设选择了大数据方向的题目。大数据的第一步就是要拿到足够的数据源。现实情况中我们需要的数据源分布在不同的业务系统中,而这些系统往往是异构的,而且我们的分析过程不能影响原有业务系统的运行。为了把不同的数据归集起来,我开始了解和接触ETL。本篇介绍阿里的开源ETL工具dataX。
<!-- more -->
ETL&&常用工具
ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。
我的理解就是从业务系统中根据所要分析的主题,建立数据仓库的过程。大数据的应用已经非常广泛,ETL过程现在已经发展成为一个比较专门的职业,相关联的包括ETL工程师,BI分析师等等。
数据的迁移和集成都需要ETL来实现,一般来说在数据仓库的开发过程中ETL会占到70%到80%的时间,我了解到的ETL工具包括:
- Kettle是一个开源的ETL工具,优点是免费,资料挺多。功能挺全面的,我折腾过一段时间,感觉不是很符合需要,想要在web上使用确实会有点困难,也可能是了解不深。
- DataStage,这是IBM为其配套的DB2开发的ETL工具,也可以用于其它数据库数据的集成,这个工具不错,银行用的挺多的。
- Informatica,这是美国的一个数据集成公司的开发的数据集成工具,有图形界面。
- sqoop,这个是hadoop生态里的一个数据导入工具,但是它依赖于hadoop环境,也有点不符合我现在阶段的需要。
当然还有其他挺多,毕竟对于数据的处理需求从信息机书诞生开始就一直存在。上面提到的这些工具比较强大,功能全面,但可能目前知识技能有限,驾驭起来不是很方便,折腾过一段时间后放弃了。我们常用的一些数据库工具也会带有导入导出功能,通过文本文件,csv文件等都能完成一个数据中专过程,但相对比较麻烦,而且功能太少对数据处理不是很方便。
直到我去云栖大会听说了DataX ,这个简洁,高效,开箱即用的ETL工具,测试过后效率也不错,调试信息也很丰富,才发现这就是我需要的。官方介绍如下:
DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、MaxCompute(原ODPS)、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。

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目录,即可运行样例同步作业。
$ tar zxvf datax.tar.gz
$ {YOUR_DATAX_HOME}
$ cd {YOUR_DATAX_HOME}/bin
$ python datax.py ../job/job.json
如果一切顺利就会看到样例输出,说明工具已经就绪可以使用了。
配置文件介绍
他的全部使用就如同安装配置部分所说,仅仅是执行一个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": {
"
}
}
}
}
- 大致也是非常容易理解的,配置数据库账号密码,配置同步的表名列名等等信息。
- 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的虚拟机,这个速度还算可以吧,可能是数据读写不在同一台机子上网络传输也消耗了不少时间。

【转】阿里出品的ETL工具dataX初体验的更多相关文章
- ETL工具Datax、sqoop、kettle 的区别
一.Sqoop主要特点: 1.可以将关系型数据库中的数据导入到hdfs,hive,hbase等hadoop组件中,也可以将hadoop组件中的数据导入到关系型数据库中: 2.sqoop在导入导出数据时 ...
- 阿里ETL工具datax学习(一)
阿里云开源离线同步工具DataX3.0介绍 一. DataX3.0概览 DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL.Oracle等).HDFS.Hive.Ma ...
- 【dataX】阿里开源ETL工具——dataX简单上手
一.概述 1.是什么? DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL.Oracle.SqlServer.Postgre.HDFS.Hive.ADS.HBase. ...
- C++ Profiler工具之初体验
http://www.cnblogs.com/likwo/archive/2012/12/20/2826988.html 转 http://www.cnblogs.com/lenolix/archiv ...
- 阿里百川HotFix2.0热修复初体验
博客原地址:http://blog.csdn.net/allan_bst/article/details/72904721 一.什么是热修复 热修复说白了就是"打补丁",比如你们公 ...
- 阿里云部署Java web项目初体验(转)
林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文主要讲了如何在阿里云上安装JDK.Tomcat以及其配置过程.最后以一个实例来演示在 ...
- 阿里云部署Java web项目初体验(转)/linux 上配置jdk和安装tomcat
摘要:本文主要讲了如何在阿里云上安装JDK.Tomcat以及其配置过程.最后以一个实例来演示在阿里云上部署Java web项目. 一.准备工作 购买了阿里云的云解析,和云服务器ecs. 2.下载put ...
- 录制简单的自动化测试工具SlikMobile初体验
今天朋友推荐了款自动化测试工具SlikMobile,下载了个试用了下,感觉还是很容易入门和上手的,感觉和testin的工具差不多,跨平台,多语言支持,支持图片.文本和Native Class三种对象方 ...
- PHP单元测试工具PHPUnit初体验
今天接到了个任务,需要对数字进行计算,因为涉及到整数,小数,和科学计数法等很多条件,所以人工测试非常麻烦,于是想到了PHP的单元测试工具PHPUnit,所以写个文档备查. 看了PHPUnit的文档之后 ...
随机推荐
- es内部的多线程异步并发控制
version元数据(1)第一次创建一个document的时候,它的_version版本号是1:以后,每次对这个document执行修改或者删除操作,都会对这个_version版本号自动加1(2)在删 ...
- Entity Framework学习 - 5.DB First执行时提示model没有key
原因:自动生成的类中有关联主键,没有自动生成Key及Column 解决方法:在xxx.tt的66行左右修改为 var simpleProperties = typeMapper.GetSimplePr ...
- 6 jmeter元件的作用域与执行顺序
元件的作用域 配置元件(config elements)会影响其作用范围内的所有元件.前置处理程序(Per-processors)在其作用范围内的每一个sampler元件之前执行.定时器(timers ...
- 如何卸载VMware虚拟机?
如何卸载VMware虚拟机? 1.windows + R 打开>运行-->regedit(打开编辑注册表)-->找到HKEY_LOCAL_MACHINE-->Software ...
- pip升级时报错--- No module named 'pip._internal'
一.问题: 之前python3.6是安装的pip版本为:pip=9.0.1,我按照提示升级报错,一直装不上pip18.0,于是直接在site-package目录下删掉了pi ...
- 帝国cms建站总结-(分页)
帝国cms分页代码文件t_functions.php 代码为: <?php if(!defined('InEmpireCMS')) { exit(); } define('InEmpireCMS ...
- zabbix 配合钉钉群机器人(webhook) 报警
首先建钉钉群,添加一个自定义机器人拿到webhook zabbix添加一个报警媒介 搞一个shell脚本来启动Python脚本(直接用zabbix调Python脚本不行,不知道什么原因) vim di ...
- centos上shellcheck的安装
关于shellcheck的作用和功能,自行查阅. centos7 上安装shellcheck的过程中查了很多资料,大部分都是在ubunt下安装的,centos的比较少,然后好不容易看到一个https: ...
- [LeetCode] 系统刷题5_Dynamic Programming
Dynamic Programming 实际上是[LeetCode] 系统刷题4_Binary Tree & Divide and Conquer的基础上,加上记忆化的过程.就是说,如果这个题 ...
- [Java] Frequently used method or solutions for issues
模板: Split string into parts based on new line in java Solution: Reference is here. 1) get out of t ...