Datax入门

DataX简介

DataX 是阿里巴巴开源的离线数据同步工具,实现包括 MySQL、SQL Server、Oracle、PostgreSQL、HDFS、Hive、HBase、OTS、ODPS 等各种异构数据源之间高效的数据同步功能。

DataX本身作为数据同步框架,将不同数据源的同步抽象为从源头数据源读取数据的Reader插件,以及向目标端写入数据的Writer插件,理论上DataX框架可以支持任意数据源类型的数据同步工作。同时DataX插件体系作为一套生态系统, 每接入一套新数据源该新加入的数据源即可实现和现有的数据源互通。

推荐环境

部署

  • 有两种部署方式

    • 方式一、下载DataX工具包:DataX下载地址

      解压至本地目录,进入bin目录,即可运行同步作业:

      $ cd  $DATAX_HOME/bin
      $ python datax.py datax_JOB.json
      

      自带小案例:
         python $DATAX_HOME/bin/datax.py $DATAX_HOME/job/job.json

    • 方式二、下载DataX源码,自己编译:DataX源码

      (1)、下载DataX源码:

      $ git clone git@github.com:alibaba/DataX.git
      

      (2)、通过maven打包:

      $ cd  {DataX_source_code_home}
      $ mvn -U clean package assembly:assembly -Dmaven.test.skip=true
      

      打包成功,日志显示如下:

      [INFO] BUILD SUCCESS
      [INFO] -----------------------------------------------------------------
      [INFO] Total time: 08:12 min
      [INFO] Finished at: 2015-12-13T16:26:48+08:00
      [INFO] Final Memory: 133M/960M
      [INFO] -----------------------------------------------------------------
      

      打包成功后的DataX包位于 {DataX_source_code_home}/target/datax/datax/ ,结构如下:

      $ cd  {DataX_source_code_home}
      $ ls ./target/datax/datax/
      bin		conf		job		lib		log		log_perf	plugin		script		tmp
      
  • 配置示例:从stream读取数据并打印到控制台

    • 第一步、创建创业的配置文件(json格式)

      可以通过命令查看配置模板: python datax.py -r {YOUR_READER} -w {YOUR_WRITER}

      如:python datax.py -r streamreader -w streamwriter

      zlh@zlhdeMacBook-Pro:~/software/datax/bin$ python datax.py -r streamreader -w streamwriter
      
      DataX (DATAX-OPENSOURCE-3.0), From Alibaba !
      Copyright (C) 2010-2017, Alibaba Group. All Rights Reserved.
      ......
      
      {
          "job": {
              "content": [
                  {
                      "reader": {
                          "name": "streamreader",
                          "parameter": {
                              "column": [],
                              "sliceRecordCount": ""
                          }
                      },
                      "writer": {
                          "name": "streamwriter",
                          "parameter": {
                              "encoding": "",
                              "print": true
                          }
                      }
                  }
              ],
              "setting": {
                  "speed": {
                      "channel": ""
                  }
              }
          }
      }
      

      根据模板配置json如下:

      #stream2stream.json
      {
        "job": {
          "content": [
            {
              "reader": {
                "name": "streamreader",
                "parameter": {
                  "sliceRecordCount": 10,
                  "column": [
                    {
                      "type": "long",
                      "value": "10"
                    },
                    {
                      "type": "string",
                      "value": "hello,你好,世界-DataX"
                    }
                  ]
                }
              },
              "writer": {
                "name": "streamwriter",
                "parameter": {
                  "encoding": "UTF-8",
                  "print": true
                }
              }
            }
          ],
          "setting": {
            "speed": {
              "channel": 5
             }
          }
        }
      }
      
    • 第二步:启动DataX

      $ python bin/datax.py ./job/stream2stream.json 
      

      同步结束,显示日志如下:

      2019-09-12 15:40:14.059 [job-0] INFO  JobContainer -
      任务启动时刻                    : 2019-09-12 15:40:03
      任务结束时刻                    : 2019-09-12 15:40:14
      任务总计耗时                    :                 10s
      任务平均流量                    :               95B/s
      记录写入速度                    :              5rec/s
      读出记录总数                    :                  50
      读写失败总数                    :                   0
      

动态传参

json文件可以结合shell脚本嵌套使用,实现复用,例如:

python datax.py -p “-Dsdbname=db_name -Dstable=tb_name” ../job/public_job.json

"column": ["*"],
"connection": [
    {
        "jdbcUrl": "jdbc:mysql://xxx:xx/${sdbname}?characterEncoding=utf-8",
        "table": ["${stable}"]
    }
],
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值