DataX介绍及使用指南(一)

一、DataX概述

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

  • 设计理念
    为了解决异构数据源同步问题,DataX将复杂的网状的同步链路变成了星型数据链路,DataX作为中间传输载体负责连接各种数据源。当需要接入一个新的数据源的时候,只需要将此数据源对接到DataX,便能跟已有的数据源做到无缝数据同步。

  • 异构数据源理念
    指不同的数据库管理系统之间的数据。在企业信息化建设过程中,由于各业务系统建设和实施数据管理系统的阶段性、技术性以及其它经济和人为因素等因素影响,导致企业在发展过程中积累了大量采用不同存储方式的业务数据,包括采用的数据管理系统也大不相同,从简单的文件数据库到复杂的网络数据库,它们构成了企业的异构数据源。

企业数据源异构性主要表现在3方面:

  1. 系统异构,即数据源所依赖的业务应用系统、数据库管理系统乃至操作系统之间的不同构成了系统异构。

  2. 模式异构,即数据源在存储模式上的不同。存储模式主要包括关系模式、 对象模式、对象关系模式和文档嵌套模式等几种,其中关系模式(关系数据库)为主流存储模式。同时,即便是同一类存储模式,它们的模式结构可能也存在着差异。例如不同的关系数据管理系统的数据类型等方面并不是完全一致的,如DB2、Oracle、Sybase、Informix、SQL Server 、Foxpro等。

  3. 来源异构,即企业内部数据源和外部数据源之间的异构。

二、DataX框架设计

官方图片

DataX本身作为离线数据同步框架,采用Framework + plugin架构构建。将数据源读取和写入抽象成为Reader/Writer插件,纳入到整个同步框架中。

  • Reader:Reader为数据采集模块,负责采集数据源的数据,将数据发送给Framework。
  • Writer: Writer为数据写入模块,负责不断向Framework取数据,并将数据写入到目的端。
  • Framework:Framework用于连接reader和writer,作为两者的数据传输通道,并处理缓冲,流控,并发,数据转换等核心技术问题。

三、DataX部署及使用

3.1 系统环境

  • Linux/Win
  • JDK(1.8以上,推荐1.8)
  • Python(推荐Python2.7.X)
  • Apache Maven 3.x (Compile DataX)

3.2 快速上手

下载页面地址:https://github.com/alibaba/DataX

在页面中【Quick Start】—>【Download DataX下载地址】进行下载。下载后的包名:datax.tar.gz。

3.3 调试

环境变量配置好后,cmd中输入下方语句,可出现如图所示内容。

python D:\datax\bin\datax.py D:\datax\job\job.json

DataX调试
如果乱码,可以在cmd中输入:

CHCP 65001

注:CHCP是一个计算机指令,能够显示或设置活动代码页编号。

代码页 描述

65001 UTF-8代码页

950繁体中文

936简体中文默认的GBK

437 MS-DOS美国英语

但是通过CHCP设置编码是治标不治本的

想永久的更改cmd编码值需要修改注册表

3.4 简单使用

DataX工具是用json文件作为配置文件的,D:\datax\job\job.json 为官方提供的json模板。

  1. 使用DataX将mysql数据导入到mysql中
{
    "job": {
        "content": [
            {
                "reader": {
                    "name": "mysqlreader",
                    "parameter": {
                        "username": "xxx",
                        "password": "72kVFvXvCpWI76oHQIGJsRw6",
                        "column": ["name","age"],
                        "where": "age=11", 
                        "connection": [
                            {
                                "table": [
                                    "user_info"
                                ],
                                "jdbcUrl": [
                                    "jdbc:mysql://172.29.30.108:3306/xxx?characterEncoding=utf8"
                                ]
                            }
                        ]
                    }
                },
                "writer": {
                        "name": "mysqlwriter",
                        "parameter": {
                        "writeMode": "xxx",
                        "username": "zhdbuser",
                        "password": "72kVFvXvCpWI76oHQIGJsRw6",
                        "column": [
                            "sync_age",
                            "sync_name"
                        ],
                        "preSql": [
                            "delete from @table"
                        ],
                        "connection": [
                            {
		      "table": [
                                    "user_info_1"
                                ],
                                "jdbcUrl":"jdbc:mysql://172.29.30.108:3306/xxx?characterEncoding=utf8"

                            }
                        ]
                    }
                }
            }
        ],
        "setting": {
            "speed": {
                "channel": 1
            },
         "errorLimit": {
             "record": 10,
             "percentage": 0.05
            }
        }
    }
}

它由三部分组成,分别是读,写和通用配置。

Reader部分,常用以下几种参数

参数名解释备注
name读取的数据库字符串
jdbcUrl数据库链接数组 会自动选择一个合法的链接 可以填写连接附件控制信息
username用户名字符串,数据库的用户名
password密码字符串,数据库的密码
table要同步的表名数组,需保证表结构一致
where选取的条件字符串
querySql自定义查询语句会自动忽略上述条件

Writer部分,常用以下几种参数

参数名解释备注
name读取的数据库字符串
jdbcUrl数据库链接数组 会自动选择一个合法的链接 可以填写连接附件控制信息
username用户名字符串,数据库的用户名
password密码字符串,数据库的密码
table要同步的表名数组,需保证表结构一致
column要同步的列名列名可以不对应,但是类型和总的个数要一致
preSql写入前执行的语句数组,比如清空表等
postSql写入后执行的语句数组
writeMode写入方式,默认为insertinsert/replace/update

job.setting.speed(流量控制)

Job支持用户对速度的自定义控制,channel的值可以控制同步时的并发数,byte的值可以控制同步时的速度

job.setting.errorLimit(脏数据控制)

Job支持用户对于脏数据的自定义监控和告警,包括对脏数据最大记录数阈值(record值)或者脏数据占比阈值(percentage值),当Job传输过程出现的脏数据大于用户指定的数量/百分比,DataX Job报错退出。

执行
cmd中输入下方语句,可出现如图所示内容。

python D:\datax\bin\datax.py D:\datax\job\mysql-demo.json

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

学习链接:

MysqlReader 插件文档
MysqlWriter 插件文档
DataX的Git地址
DataX介绍

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值