Datax的使用说明及入门操作案例演示

1.DataX

DataX 是阿里云 DataWorks数据集成 的开源版本,在阿里巴巴集团内被广泛使用的离线数据同步工具/平台。DataX 实现了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、Hologres、DRDS, databend 等各种异构数据源之间高效的数据同步功能。

2.DataX下载地址

下载地址:https://datax-opensource.oss-cn-hangzhou.aliyuncs.com/202303/datax.tar.gz
如果以上连接不可用, 可以访问以下地址DataX下载页找到如下图所示连接进行下载
在这里插入图片描述

3.DataX数据源支持

DataX目前已经有了比较全面的插件体系,主流的RDBMS数据库、NOSQL、大数据计算系统都已经接入,目前支持数据如下图

类型数据源Reader(读)Writer(写)文档
RDBMS 关系型数据库MySQL
Oracle
OceanBase
SQLServer
PostgreSQL
DRDS
Kingbase
通用RDBMS(支持所有关系型数据库)
阿里云数仓数据存储ODPS
ADB
ADS
OSS
OCS
Hologres
AnalyticDB For PostgreSQL
阿里云中间件datahub读 、写
SLS读 、写
阿里云图数据库GDB
NoSQL数据存储OTS
Hbase0.94
Hbase1.1
Phoenix4.x
Phoenix5.x
MongoDB
Cassandra
数仓数据存储StarRocks读 、
ApacheDoris
ClickHouse
Databend
Hive
kudu
selectdb
无结构化数据存储TxtFile
FTP
HDFS
Elasticsearch
时间序列数据库OpenTSDB
TSDB
TDengine

4.DataX安装

4.1 环境准备

  • Linux系统
  • JDK(1.8以上,推荐1.8)
  • Python(2或3都可以)
  • Apache Maven 3.x (如果是源码编译DataX需要使用)

4.2 安装方式

  • 方式一: 直接下载DataX工具包:DataX下载地址
    如果上述链接失效, 请访问官方地址找到如下图所示链接进行下载
    在这里插入图片描述
    下载后解压至本地某个目录,进入bin目录,即可运行同步作业:
$ cd  {YOUR_DATAX_HOME}/bin

$ python datax.py {YOUR_JOB.json}

自检脚本:

python {YOUR_DATAX_HOME}/bin/datax.py {YOUR_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

5.实际案例演示

首先需要有两个数据源,一个是原始数据源, 一个是目标数据源, 我智力为了演示方便, 使用的都是MySQL数据库,演示的案列就是把mysql1中saturn-test数据库中的st_student表中的数据迁移到mysql2中saturn-test数据库中的st_student表中
主要就在于job.json文件的编写,这个官方给我们提供好了示例, 我们只要赋值过来改成我们自己的数据库连接配置其实就可以了,
首先我们是从MySQL中读取数据, 所以我们找到关于MYSQL读、写的job的配置应该怎么写,在这里插入图片描述
点击MySQL的读、写链接
在这里插入图片描述
在这里插入图片描述

更多关于MysqlReader插件文档请自行阅读查看

更多关于MysqlWriter插件文档请自行阅读查看

示例myjob.json

{
    "job": {
        "setting": {
            "speed": {
                 "channel": 3
            },
            "errorLimit": {
                "record": 0,
                "percentage": 0.02
            }
        },
        "content": [
            {
                "reader": {
                    "name": "mysqlreader",
                    "parameter": {
                        "username": "数据库用户",
                        "password": "数据库密码",
                        "column": [
                            "stu_id",
                            "stu_name"
                        ],
                        "splitPk": "stu_id",
                        "connection": [
                            {
                                "table": [
                                    "st_student"
                                ],
                                "jdbcUrl": [
                                    "jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF8"
                                ]
                            }
                        ]
                    }
                },
                "writer": {
                    "name": "mysqlwriter",
                    "parameter": {
                        "writeMode": "insert",
                        "username": "数据库用户",
                        "password": "数据库密码",
                        "column": [
                            "stu_id",
                            "stu_name"
                        ],
                        "session": [
                            "set session sql_mode='ANSI'"
                        ],
                        "preSql": [
                            "delete from st_student"
                        ],
                        "connection": [
                            {
                                "jdbcUrl": "jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF8",
                                "table": [
                                    "st_student"
                                ]
                            }
                        ]
                    }
                }
            }
        ]
    }
}

调用datax.py,执行我们刚才定义的myjob.json即可

python /datax安装路径/bin/datax.py /myjob.json所在目录的绝对路径/myjob.json

示例:

python /opt/soft/datax/bin/myjob.json /opt/scripts/datax/myjob.json

在这里插入图片描述
执行成功之后控制台打印如上信息, 如果出现错误,根据错误日志进行错误排查解决重新跑执行就行了。

在这里插入图片描述
查询两个数据库,发现数据已经迁移同步成功了。datax的使用是不是还挺简单的呢~,多动手,掌握的就会越来越多。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 您好,Datax JSON文件的配置说明案例可以在官方文档中找到:https://github.com/alibaba/DataX/tree/master/doc/configure_details。它提供了许多有用的信息,可以帮助您了解如何使用Datax来配置JSON文件。 ### 回答2: datax是一个开源的数据同步工具,它支持多种数据源和目的地的数据同步,其中的json配置文件是用来描述任务流程和数据源/目的地信息的。 在datax的json配置文件中,主要包含以下几个重要配置项: 1. job:表示datax的一个任务,包含setting和content两个子配置项。 - setting:设置任务的全局参数,可以设置并发度、并行度、执行模式等。 - content:描述任务流程的数据处理步骤,包括读取数据源、处理数据和写入目的地等。 2. reader:数据源的配置项,用于读取数据。根据不同的数据源类型,reader的配置项也会有所不同。例如,对于关系型数据库的读取,需要指定数据库类型、连接信息和查询语句等。 3. writer:目的地的配置项,用于写入数据。同样根据目的地的类型不同,writer的配置项也会有所差异。例如,对于关系型数据库的写入,需要指定数据库类型、连接信息和写入表名等。 除了上述基本配置项外,datax的json配置文件还可以包含一些高级配置项,例如: - transformer:数据转换器,用于对数据进行加工和转换。 - jobinfo:任务运行信息,包括任务的启动时间、结束时间和执行状态等。 - speed:数据传输速度的控制,可以设置读写速率的上限。 以下是一个datax的json配置文件的示例: { "job": { "setting": { "speed": { "record": 1000 } }, "content": [ { "reader": { "name": "mysqlreader", "parameter": { "username": "root", "password": "password123", "column": [ "id", "name", "age" ], "connection": [ { "querySql": [ "SELECT * FROM user" ], "jdbcUrl": [ "jdbc:mysql://localhost:3306/test" ] } ], "splitPk": "", "where": "", "fetchSize": 1024 } }, "writer": { "name": "mysqlwriter", "parameter": { "username": "root", "password": "password123", "column": [ "id", "name", "age" ], "connection": [ { "jdbcUrl": "jdbc:mysql://localhost:3306/test" } ], "preSql": [ "truncate table user" ], "postSql": [], "writeMode": "insert" } } } ] } } 在这个示例中,配置了一个从MySQL数据库读取数据,并写入到另一个MySQL数据库的任务。其中,reader使用的是mysqlreader插件,writer使用的是mysqlwriter插件。连接信息、查询语句、字段映射等都在配置项中进行了设置。此外,还设置了数据读取速率控制、写入模式等参数。 ### 回答3: datax是阿里巴巴开源的一款数据同步工具,支持从不同数据源(如关系型数据库、Hadoop、HBase等)抽取、转换和加载数据,并将其同步到其他数据源中。datax的配置文件是以json格式编写的,下面是json文件的各项配置说明案例示例: 1. job - job是datax配置中的根节点,其中包含了任务相关的配置信息。 - 示例:{"job": {...}} 2. setting - setting是job节点下的子节点,用于配置一些通用设置,如错误限制和并发控制。 - 示例:{"setting": {"errorLimit": {"record": 0, "percentage": 0.02}, "speed": {"channel": 3}}} 3. content - content是job节点下的子节点,用于配置具体的任务内容。 - 示例:{"content": [{"reader": {...}, "writer": {...}}]} 4. reader - reader用于配置数据读取相关的信息,如数据源、读取字段和查询条件等。 - 示例:{"reader": {"name": "mysqlreader", "parameter": {"username": "root", "password": "123456", "column": ["id", "name"], "connection": [{"jdbcUrl": "jdbc:mysql://localhost:3306/test", "table": ["user"]}]}} 5. writer - writer用于配置数据写入相关的信息,如数据目标、写入字段等。 - 示例:{"writer": {"name": "mysqlwriter", "parameter": {"username": "root", "password": "123456", "column": ["id", "name"], "connection": [{"jdbcUrl": "jdbc:mysql://localhost:3306/test", "table": ["user"]}]}} 以上为datax的json文件的一些常用配置说明案例示例,实际应用中根据具体的数据同步需求进行相应的配置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值