原文链接: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工具包括:

  1. Kettle是一个开源的ETL工具,优点是免费,资料挺多。功能挺全面的,我折腾过一段时间,感觉不是很符合需要,想要在web上使用确实会有点困难,也可能是了解不深。
  2. DataStage,这是IBM为其配套的DB2开发的ETL工具,也可以用于其它数据库数据的集成,这个工具不错,银行用的挺多的。
  3. Informatica,这是美国的一个数据集成公司的开发的数据集成工具,有图形界面。
  4. 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初体验的更多相关文章

  1. ETL工具Datax、sqoop、kettle 的区别

    一.Sqoop主要特点: 1.可以将关系型数据库中的数据导入到hdfs,hive,hbase等hadoop组件中,也可以将hadoop组件中的数据导入到关系型数据库中: 2.sqoop在导入导出数据时 ...

  2. 阿里ETL工具datax学习(一)

    阿里云开源离线同步工具DataX3.0介绍 一. DataX3.0概览 ​ DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL.Oracle等).HDFS.Hive.Ma ...

  3. 【dataX】阿里开源ETL工具——dataX简单上手

    一.概述 1.是什么? DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL.Oracle.SqlServer.Postgre.HDFS.Hive.ADS.HBase. ...

  4. C++ Profiler工具之初体验

    http://www.cnblogs.com/likwo/archive/2012/12/20/2826988.html 转 http://www.cnblogs.com/lenolix/archiv ...

  5. 阿里百川HotFix2.0热修复初体验

    博客原地址:http://blog.csdn.net/allan_bst/article/details/72904721 一.什么是热修复 热修复说白了就是"打补丁",比如你们公 ...

  6. 阿里云部署Java web项目初体验(转)

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文主要讲了如何在阿里云上安装JDK.Tomcat以及其配置过程.最后以一个实例来演示在 ...

  7. 阿里云部署Java web项目初体验(转)/linux 上配置jdk和安装tomcat

    摘要:本文主要讲了如何在阿里云上安装JDK.Tomcat以及其配置过程.最后以一个实例来演示在阿里云上部署Java web项目. 一.准备工作 购买了阿里云的云解析,和云服务器ecs. 2.下载put ...

  8. 录制简单的自动化测试工具SlikMobile初体验

    今天朋友推荐了款自动化测试工具SlikMobile,下载了个试用了下,感觉还是很容易入门和上手的,感觉和testin的工具差不多,跨平台,多语言支持,支持图片.文本和Native Class三种对象方 ...

  9. PHP单元测试工具PHPUnit初体验

    今天接到了个任务,需要对数字进行计算,因为涉及到整数,小数,和科学计数法等很多条件,所以人工测试非常麻烦,于是想到了PHP的单元测试工具PHPUnit,所以写个文档备查. 看了PHPUnit的文档之后 ...

随机推荐

  1. 如何在win+r 或者是win10的应用搜索输入subl就能打开sublime

    这虽然不是什么技术贴,我实在不想开启sublime还要动鼠标,或者输入subl长长的全称,这里有两种做法: 第一种 在环境变量添加sublime安装目录的变量,一般sublime的安装目录会有subl ...

  2. wc 统计命令

    [root@localhost ~]# wc /etc/passwd // 统计行数.单词数.字符数 /etc/passwd [root@localhost ~]# wc -l /etc/passwd ...

  3. python 字符串、列表和元祖之间的切换

    >>> s=['http','://','www','baidu','.com'] >>> url=''.join(s) >>> url 'htt ...

  4. List与Array互相转换

    List转换为Array可以这样处理: ArrayList<String> list=new ArrayList<String>(); String[] strings = n ...

  5. vuex 子组件传值

    以下是基础的使用方法,详细且深入使用方法详细见博客:https://segmentfault.com/a/1190000015782272 Vuex官网地址:https://vuex.vuejs.or ...

  6. seller【2】Mock数据(接口访问配置)

    Mock数据 在文件[vue.config.js] - devServer 字段 - before(app)函数配置数据接口访问 const appData = require('./data.jso ...

  7. sap gui 配置

    1: sap gui 安全配置 ,在左下角搜索sap gui configuration.

  8. jenkins openshift 持续集成

    参数部分没有 不要照抄,只供参考 需求: CI利用confd+etcd生成配置文件 CI把git的COMMIT 传到openshift的buildconfigs #!/bin/bash echo ec ...

  9. 一份C++学习资源,咬牙切齿地好用呀

    多年以后,你已经是一名技术总监,有一个美丽的妻子,两个孩子:你已经拥有了现在的你想都不敢想的一切:那时,你也一定会忘记,今天这篇教程,如同一颗石子,铺就过你前进的路. 下面是我们的老师根据现有资源整理 ...

  10. ELK(下)

    ELK架构图: 架构图一: 这是最简单的一种ELK架构方式.优点是搭建简单,易于上手.缺点是Logstash耗资源较大,运行占用CPU和内存高.另外没有消息队列缓存,存在数据丢失隐患. 此架构由Log ...