【DataX总结】

article/2025/10/13 2:52:08

DataX

  • 一、 ETL工具
    • 概述
    • 主流ETL工具
  • 二、Datax概述
    • 亮点一:异构数据源
      • DataX 设计
      • 框架设计
    • 亮点二:稳定高效
      • 运行原理
  • 三、DataX的安装
    • 安装
    • 使用
      • 写json文件
      • 任务提交
    • 传参

一、 ETL工具

概述

ETL工具是将数据从来源端经过抽取、转换、装载至目的端的过程。

主流ETL工具

1、DataPipeline
2、Kettle
3、Talend
4、Informatica
5、Datax
6、Oracle Goldengate
7、sqoop

二、Datax概述

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

亮点一:异构数据源

DataX 设计

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

框架设计

在这里插入图片描述

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

简单来说,就是datax在数据库之间充当中介的角色,将各种数据类型先转换为datax内部的数据类型,再转换为目标数据库的数据类型,从而解决异构数据源的难题

亮点二:稳定高效

运行原理

在这里插入图片描述
1.Job:单个作业的管理节点,负责数据清理、子任务划分、TaskGroup监控管理。
2.Task:由Job切分而来,是DataX作业的最小单元,每个Task负责一部分数据的同步工作。
3.Schedule:将Task组成TaskGroup,单个TaskGroup的并发数量为5。
4.TaskGroup:负责启动Task。

简单来说就是把一个作业拆分成多个任务,让他们并发执行,从而保证其高效,但相对于sqoop基于mapreduce在多台机器分布式运行的方式,datax的效率还是相对较低的,因为datax只能在一台机器运行,但对于目前的大多数企业已经足够了

三、DataX的安装

安装

官方文档

下载地址:http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz
源码地址:https://github.com/alibaba/DataX
gitcode地址:https://gitcode.net/mirrors/alibaba/datax?utm_source=csdn_github_accelerator

环境要求
1.Linux
2.JDK(1.8以上,推荐1.8)
3.Python(推荐Python2.6.X)

下载
在linux执行

curl -LO http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz

wget http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz
安装
1、将datax解压到指定目录

tar -zxvf datax.tar.gz -C /opt/module/

2、运行自检脚本

cd /opt/module/datax/bin/
python datax.py /opt/module/datax/job/job.json

出现如下就代表安装成功
在这里插入图片描述

datax小坑1,报错如下

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

解决方式:将reader和writer目录下的 ._* 这类隐藏文件删除
rm -rf /opt/bigdata/hadoop/server/datax/plugin/*/._*

使用

写json文件

参考官方文档 https://github.com/alibaba/DataX
在这里插入图片描述
只需要参考官方文档的读写写出对应功能的json文件即可

示例 mysql_to_mysql.json:

{"job": {"setting": {"speed": {"channel":1}},"content": [{"reader": {"name": "mysqlreader","parameter": {"username": "root","password": "root","connection": [{"querySql": ["select `id`, `name`, `email`, `phone`, `gender`, `password`, `age`, `create_time`, `update_time` from app_user"],"jdbcUrl": ["jdbc:mysql://192.168.10.100:3306/test_bai?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true"]}]}},"writer": {"name": "mysqlwriter","parameter": {"writeMode": "insert","username": "root","password": "root","column": ["id", "name", "email", "phone", "gender", "password", "age", "create_time", "update_time"],"connection": [{"jdbcUrl": "jdbc:mysql://192.168.10.100:3306/datax?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true","table": ["app_user"]}]}}}]}
}

任务提交

1.到达datax下的bin目录
cd /opt/module/datax/bin
2.执行datax命令
datax.py ../job/mysql_to_mysql.json
在这里插入图片描述
datax小坑2
datax源码默认的Mysql的jdbc驱动是5.X的,如果使用的是mysql8需要将源码下载下来
1.将驱动信息修改为8.X
找到位于 {DataX_source_code_home}/mysqlreader/ 和 {DataX_source_code_home}/mysqlwriter/ 下的 pom.xml文件,将version的值改为8.0.X(可以直接搜索‘mysql-connector-java’快速定位,X写你自己想要的 版本号)
2.修改zeroDateTimeBehavior的值convertToNull 为 CONVERT_TO_NULL:
编辑{DataX_source_code_home}/plugin-rdbms- util/src/main/java/com/alibaba/datax/plugin/rdbms/util/DataBaseType.java
全文替换 convertToNull 为 CONVERT_TO_NULL;
全文替换"com.mysql.jdbc.Driver"为"com.mysql.cj.jdbc.Driver",
3.使用maven重新打包
mvn -U clean package assembly:assembly -Dmaven.test.skip=true
打好的包位于{DataX_source_code_home}/target/datax/datax/

传参

配置文件base_province.json,内容如下

{"job": {"content": [{"reader": {"name": "mysqlreader","parameter": {"connection": [{"jdbcUrl": ["jdbc:mysql://hadoop102:3306/gmall"],"querySql": ["select id,name,region_id,area_code,iso_code,iso_3166_2 from base_province where id>=3"]}],"password": "000000","username": "root"}},"writer": {"name": "hdfswriter","parameter": {"column": [{"name": "id","type": "bigint"},{"name": "name","type": "string"},{"name": "region_id","type": "string"},{"name": "area_code","type": "string"},{"name": "iso_code","type": "string"},{"name": "iso_3166_2","type": "string"}],"compress": "gzip","defaultFS": "hdfs://hadoop102:8020","fieldDelimiter": "\t","fileName": "base_province","fileType": "text","path": "/base_province/${dt}","writeMode": "append"}}}],"setting": {"speed": {"channel": 1}}}
}

执行如下命令

[atguigu@hadoop102 datax]$ python bin/datax.py -p"-Ddt=2020-06-14" job/base_province.json

http://chatgpt.dhexx.cn/article/EGPBQYTe.shtml

相关文章

大数据技术之DataX (一)DataX插件开发

文章目录 一、背景二、基于java的本地测试datax2.1 github上下载datax的源代码2.2 datax代码导入idea 三、docker安装南大通用数据库GBase和GBase 8a3.1 docker安装Gbase 8a3.2 docker安装Gbase 8s 四、南大通用数据库GBase 8s To GBase 8a4.1 GBase 8s的reader读插件开发&…

【工具】之DataX-Web简单介绍

目录 一、概念 二、架构 三、功能 四、使用说明 1、执行器配置 2、创建项目 3、创建数据源(源库和目标库) 4、创建任务模版 5、构建JSON脚本 正常流程(单库单表) 1.构建reader 2.构建writer 3.字段映射 4.构建 批量创建…

datax(21):编写自己的Transformer

前面2篇文章,已经看完学习完transform的内容,今天继续编写一个自己的transformer; 一、环境 win10DataX 3.0(从我的datax分支打包而来)job.json使用datax的样例json,源文件在xxx\DataX\core\src\main\job\中,打包编译…

大数据项目之电商数仓DataX、DataX简介、DataX支持的数据源、DataX架构原理、DataX部署

文章目录 1. DataX简介1.1 DataX概述1.2 DataX支持的数据源 2. DataX架构原理2.1 DataX设计理念2.2 DataX框架设计2.3 DataX运行流程2.4 DataX调度决策思路2.5 DataX与Sqoop对比 3. DataX部署3.1 下载DataX安装包并上传到hadoop102的/opt/software3.2 解压datax.tar.gz到/opt/m…

datax安装+配置+使用文档

1 DataX离线同步工具DataX3.0介绍 DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各种异构数据源之间高效的数据同步功能。 Github…

datax(13):源码解读Column-datax中的数据类型

一、基类Column概述 Column是datax中所有数据类型的基类,里面有3个属性,以及一个构造方法,外加一个枚举类; public abstract class Column {private Type type;private Object rawData;private int byteSize;public Column(fina…

DataX使用说明

DataX使用说明 1.DataX介绍 DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。 也就是数据库的数据同步工具,免费版没有web页面&#xff0…

Datax入门使用

DataX入门使用 一、简介 DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各种异构数据源之间高效的数据同步功能。Datax将不同数据源…

DataX 的使用

一、DataX 的部署 1、上传 datax 压缩包并解压 tar -zxvf datax.tar.gz -C /usr/local/soft/ 2、自检,执行命令(在datax目录下) [rootmaster datax]# python ./bin/datax.py ./job/job.json 安装成功 二、DataX 的使用 MySQL写入MySQL …

DATAX快速上手非常详细

前言 博主在工作的过程中有一天公司决定将数据迁移的新的项目上去,当我发现数据库中的表大于有4000多张表的时我顿时懵了下,这数据迁移人力物力消耗的也太大了吧(看DataX的设计)。所以我们可以借助阿里云开源的DataX来解决这个问题。 看完这篇掌…

DataX及DataX-Web

大数据Hadoop之——数据同步工具DataX数据采集工具-DataX datax详细介绍及使用 一、概述 DataX 是阿里云DataWorks数据集成的开源版本,在阿里巴巴集团内被广泛使用的离线数据同步工具/平台。DataX 实现了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre、HDFS、…

datax(4): datax.py解读

datax 直接使用py文件进行任务提交,今天读一读它 一、文件位置 原始文件位置在 xx/DataX/core/src/main/bin/下,datax项目打包后会将文件拷贝到 xx/DataX\target\datax\datax\bin 下。 core模块的pom.xml 指定‘拷贝’datax.py文件的方式maven-assembly…

DataX使用指南

简介 DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、Oracle、HDFS、Hive、OceanBase、HBase、OTS、ODPS 等各种异构数据源之间高效的数据同步功能。DataX采用了框架 插件 的模式,目前已开源,代码托管在github。…

DataX

DataX的环境搭建以及简单测试 什么是DataX DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、 HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。 (这是一个单机多任务的ETL工具&#xff0…

DataX 简介及架构原理

DataX 简介及架构原理 概述 DataX是阿里巴巴使用 Java 和 Python 开发的一个异构数据源离线同步工具 异构数据源:不同存储结构的数据源 致力于实现包括关系型数据库 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS…

DataX的使用与介绍(1)

一、什么是DataX? DataX是阿里云商用产品DataWorks数据集成的开源版本,它是一个异构数据源的离线数据同步工具/平台(ETL工具)。DataX实现了包括Mysql,Oracle、OceanBase、Sqlserver,Postgre、HDFS、Hive、…

DataX介绍

DataX 是阿里开源的一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。 DataX设计理念 DataX本身作为数据同步框架,将不同数据源的同步抽象为从源头…

详解DataX及使用

DataX概述 简介 DataX 是阿里巴巴开源的一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。 支持数据源 DataX架构原理 设计理念 为了解决异构数据源同步问…

使用 DataX 实现数据同步(高效的同步工具)

DataX 使用介绍 前言一、DataX 简介1.DataX3.0 框架设计2.DataX3.0 核心架构 二、使用 DataX 实现数据同步1.Linux 上安装 DataX 软件2.DataX 基本使用3.安装 MySQL 数据库4.通过 DataX 实 MySQL 数据同步5.使用 DataX 进行增量同步 前言 我们公司有个项目的数据量高达五千万&…

Transpose函数的用法

Transpose函数的用法 在CNN机器学习中,经常要用到transpose函数对多维数组进行转置操作,下面是我对函数的理解过程。 1.二维数组的转换 二维数组中,原数组的第0轴的行,转换成新数组第1轴的列; 2.三维数组 三维数组较…