DataX使用说明

article/2025/10/13 4:53:01

DataX使用说明

1.DataX介绍

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

也就是数据库的数据同步工具,免费版没有web页面,需在控制台进行操作

2.DataX下载

DataX 下载地址:http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz

DataX 快速启动地址:https://github.com/alibaba/DataX/blob/master/userGuid.md

DataX github地址:https://github.com/alibaba/DataX

下载请点击第一个地址下载,快速使用可以选择不看,下方会详细讲解

3.DataX使用

3.1 环境

  • JDK1.8
  • python 2.6.*(推荐)python3也可运行

windows或者macos安装好适配自己的环境(这里就自行百度啦)

3.2 解压

DataX下载完后,是一个datax.tat.gz的包,解压它,得到datax文件夹

image-20211108091331924

进入datax

image-20211108102205993

  • bin:程序的执行目录,里面的data.py是控制台执行该程序的启动文件
  • log:执行后的日志,每执行一次生成一个日志文件,可以清楚的看到报错信息
  • plugin:reader和writer插件,比如reader里的mysqlreader为mysql的读取插件

3.3 使用

1.数据源文档(gitHub加载较慢,用流量看github稍微快一些)

类型数据源Reader(读)Writer(写)文档
RDBMS 关系型数据库MySQL读 、写
Oracle读 、写
OceanBase读 、写
SQLServer读 、写
PostgreSQL读 、写
DRDS读 、写
通用RDBMS(支持所有关系型数据库)读 、写
阿里云数仓数据存储ODPS读 、写
ADS
OSS读 、写
OCS读 、写
NoSQL数据存储OTS读 、写
Hbase0.94读 、写
Hbase1.1读 、写
Phoenix4.x读 、写
Phoenix5.x读 、写
MongoDB读 、写
Hive读 、写
Cassandra读 、写
无结构化数据存储TxtFile读 、写
FTP读 、写
HDFS读 、写
Elasticsearch
时间序列数据库OpenTSDB
TSDB读 、写

2.配置json文件

使用dataX很简单,只需要配置一个json文件即可,配置内容大致如下:

  • 配置需要读取的数据源
  • 配置需要存储的数据源
  • 配置线程数

而该json文件的空模板datax也提供给我们了,使用如下命令获取(首先进入datax/bin/下):

python datax.py -r {读取数据库的插件名} -w {写入数据库的插件名}

比如我想要用txt文件作为读取的数据源,mysql数据库作为写入的数据源,获取它的模板如下:

python datax.py -r txtfilereader -w mysqlwriter
  • 所有的插件名可以去/plugin文件夹下找到名字

得到如下json:

{"job": {"content": [{"reader": {"name": "txtfilereader", "parameter": {"column": [], "encoding": "", "fieldDelimiter": "", "path": []}}, "writer": {"name": "mysqlwriter", "parameter": {"column": [], "connection": [{"jdbcUrl": "", "table": []}], "password": "", "preSql": [], "session": [], "username": "", "writeMode": ""}}}], "setting": {"speed": {"channel": ""}}}
}

里面具体的参数应该填写什么值,就看上方的那个表格(数据源文档),作为读的数据源就去看读的文档,作为写的数据源就看写的文档,将配置填入后,新建json文件,复制该json文本到json文件中。

3.运行该json文件(首先进入datax/bin/下)

python datax.py {你的json配置文件的路径} 

3.4 示例

以txtfilereader(txt文件读取插件)和mysqlwriter(mysql写入插件)作为数据同步示例。

1.首先获取txtfilereader与mysqlwriter的空配置模板

python datax.py -r txtfilereader -w mysqlwriter

结果如下:

{"job": {"content": [{"reader": {"name": "txtfilereader", "parameter": {"column": [], "encoding": "", "fieldDelimiter": "", "path": []}}, "writer": {"name": "mysqlwriter", "parameter": {"column": [], "connection": [{"jdbcUrl": "", "table": []}], "password": "", "preSql": [], "session": [], "username": "", "writeMode": ""}}}], "setting": {"speed": {"channel": ""}}}
}

2.新建json文件,复制模板内容,名字可取需要同步的表的表名,我取名为comm_attachment.json

3.新建mysql表(作为写入的表)

create table comm_attachment
(id                int auto_increment comment '主键'primary key,project_type      varchar(100) null comment '项目名-说明该附件是属于哪个项目的',attach_type       varchar(100) null comment '附件类型',attach_name       varchar(200) null comment '附件名',attach_url        varchar(500) null comment '附件下载地址',attach_key        varchar(500) null comment '附件key',attach_hash       varchar(500) null comment '附件hash',attach_size       varchar(100) null comment '附件大小',created_by        varchar(100) null comment '创建人',created_date      timestamp    null comment '创建时间',last_updated_by   varchar(100) null comment '最后修改人',last_updated_date timestamp    null comment '最后修改时间',version           int          null comment '乐观锁-版本号'
)comment '附件表';

4.新建csv文件,编造一些测试数据进去

我的mysql数据源的表comm_attachment有12列,那么csv的内容也和该表的列顺序一致(如果顺序不一致,更改配置中writer.column数组的顺序)

建好后,把csv后缀改为txt即可,txt内容如下:

1,sunnyDay,image/png,振动测量钉钉图标.png,http://qyn6nlamm.hd-bkt.clouddn.com/Frv7wnlpCWpjlUq-qWFPrjQdm1AI?attname=%E6%8C%AF%E5%8A%A8%E6%B5%8B%E9%87%8F%E9%92%89%E9%92%89%E5%9B%BE%E6%A0%87.png,Frv7wnlpCWpjlUq-qWFPrjQdm1AI,Frv7wnlpCWpjlUq-qWFPrjQdm1AI,44kb,anonymous,2021-09-16 16:52:38,anonymous,2021-09-16 16:52:38,0
2,sunnyDay,image/png,振动测量钉钉图标.png,http://qyn6nlamm.hd-bkt.clouddn.com/Frv7wnlpCWpjlUq-qWFPrjQdm1AI?attname=%E6%8C%AF%E5%8A%A8%E6%B5%8B%E9%87%8F%E9%92%89%E9%92%89%E5%9B%BE%E6%A0%87.png,Frv7wnlpCWpjlUq-qWFPrjQdm1AI,Frv7wnlpCWpjlUq-qWFPrjQdm1AI,44kb,anonymous,2021-09-16 16:52:38,anonymous,2021-09-16 16:52:38,0
3,sunnyDay,image/png,振动测量钉钉图标.png,http://qyn6nlamm.hd-bkt.clouddn.com/Frv7wnlpCWpjlUq-qWFPrjQdm1AI?attname=%E6%8C%AF%E5%8A%A8%E6%B5%8B%E9%87%8F%E9%92%89%E9%92%89%E5%9B%BE%E6%A0%87.png,Frv7wnlpCWpjlUq-qWFPrjQdm1AI,Frv7wnlpCWpjlUq-qWFPrjQdm1AI,44kb,anonymous,2021-09-16 16:52:38,anonymous,2021-09-16 16:52:38,0
4,sunnyDay,image/png,振动测量钉钉图标.png,http://qyn6nlamm.hd-bkt.clouddn.com/Frv7wnlpCWpjlUq-qWFPrjQdm1AI?attname=%E6%8C%AF%E5%8A%A8%E6%B5%8B%E9%87%8F%E9%92%89%E9%92%89%E5%9B%BE%E6%A0%87.png,Frv7wnlpCWpjlUq-qWFPrjQdm1AI,Frv7wnlpCWpjlUq-qWFPrjQdm1AI,44kb,anonymous,2021-09-16 16:52:38,anonymous,2021-09-16 16:52:38,0
5,sunnyDay,image/png,振动测量钉钉图标.png,http://qyn6nlamm.hd-bkt.clouddn.com/Frv7wnlpCWpjlUq-qWFPrjQdm1AI?attname=%E6%8C%AF%E5%8A%A8%E6%B5%8B%E9%87%8F%E9%92%89%E9%92%89%E5%9B%BE%E6%A0%87.png,Frv7wnlpCWpjlUq-qWFPrjQdm1AI,Frv7wnlpCWpjlUq-qWFPrjQdm1AI,44kb,anonymous,2021-09-16 16:52:38,anonymous,2021-09-16 16:52:38,0
6,sunnyDay,image/png,振动测量钉钉图标.png,http://qyn6nlamm.hd-bkt.clouddn.com/Frv7wnlpCWpjlUq-qWFPrjQdm1AI?attname=%E6%8C%AF%E5%8A%A8%E6%B5%8B%E9%87%8F%E9%92%89%E9%92%89%E5%9B%BE%E6%A0%87.png,Frv7wnlpCWpjlUq-qWFPrjQdm1AI,Frv7wnlpCWpjlUq-qWFPrjQdm1AI,44kb,anonymous,2021-09-16 16:52:38,anonymous,2021-09-16 16:52:38,0
7,sunnyDay,image/png,振动测量钉钉图标.png,http://qyn6nlamm.hd-bkt.clouddn.com/Frv7wnlpCWpjlUq-qWFPrjQdm1AI?attname=%E6%8C%AF%E5%8A%A8%E6%B5%8B%E9%87%8F%E9%92%89%E9%92%89%E5%9B%BE%E6%A0%87.png,Frv7wnlpCWpjlUq-qWFPrjQdm1AI,Frv7wnlpCWpjlUq-qWFPrjQdm1AI,44kb,anonymous,2021-09-16 16:52:38,anonymous,2021-09-16 16:52:38,0
8,sunnyDay,image/png,振动测量钉钉图标.png,http://qyn6nlamm.hd-bkt.clouddn.com/Frv7wnlpCWpjlUq-qWFPrjQdm1AI?attname=%E6%8C%AF%E5%8A%A8%E6%B5%8B%E9%87%8F%E9%92%89%E9%92%89%E5%9B%BE%E6%A0%87.png,Frv7wnlpCWpjlUq-qWFPrjQdm1AI,Frv7wnlpCWpjlUq-qWFPrjQdm1AI,44kb,anonymous,2021-09-16 16:52:38,anonymous,2021-09-16 16:52:38,0
9,sunnyDay,image/png,振动测量钉钉图标.png,http://qyn6nlamm.hd-bkt.clouddn.com/Frv7wnlpCWpjlUq-qWFPrjQdm1AI?attname=%E6%8C%AF%E5%8A%A8%E6%B5%8B%E9%87%8F%E9%92%89%E9%92%89%E5%9B%BE%E6%A0%87.png,Frv7wnlpCWpjlUq-qWFPrjQdm1AI,Frv7wnlpCWpjlUq-qWFPrjQdm1AI,44kb,anonymous,2021-09-16 16:52:38,anonymous,2021-09-16 16:52:38,0
10,sunnyDay,image/png,振动测量钉钉图标.png,http://qyn6nlamm.hd-bkt.clouddn.com/Frv7wnlpCWpjlUq-qWFPrjQdm1AI?attname=%E6%8C%AF%E5%8A%A8%E6%B5%8B%E9%87%8F%E9%92%89%E9%92%89%E5%9B%BE%E6%A0%87.png,Frv7wnlpCWpjlUq-qWFPrjQdm1AI,Frv7wnlpCWpjlUq-qWFPrjQdm1AI,44kb,anonymous,2021-09-16 16:52:38,anonymous,2021-09-16 16:52:38,0

5.查阅文档后,编写json配置

类型数据源Reader(读)Writer(写)文档
RDBMS 关系型数据库MySQL读 、写
无结构化数据存储TxtFile读 、写

comm_attachment.json:

{"job": {"content": [{"reader": {"name": "txtfilereader","parameter": {"column": [{"index": 0,"type": "long"},{"index": 1,"type": "string"},{"index": 2,"type": "string"},{"index": 3,"type": "string"},{"index": 4,"type": "string"},{"index": 5,"type": "string"},{"index": 6,"type": "string"},{"index": 7,"type": "string"},{"index": 8,"type": "string"},{"index": 9,"type": "date","format": "yyyy-MM-dd HH:mm:ss"},{"index": 10,"type": "string"},{"index": 11,"type": "date","format": "yyyy-MM-dd HH:mm:ss"},{"index": 12,"type": "long"},],"encoding": "UTF-8","fieldDelimiter": ",","path": ["/Users/cheng/Desktop/sunnyday_comm_attachment.txt"]}},"writer": {"name": "mysqlwriter","parameter": {"column": ["id","project_type","attach_type","attach_name","attach_url","attach_key","attach_hash","attach_size","created_by","created_date","last_updated_by","last_updated_date","version"],"connection": [{"jdbcUrl": "jdbc:mysql://localhost:3306/sunnyday?characterEncoding=utf-8&serverTimezone=Asia/Shanghai","table": ["comm_attachment"]}],"password": "12345678","preSql": ["delete from comm_attachment"],"session": [],"username": "root","writeMode": "insert"}}}],"setting": {"speed": {"channel": "5"}}}
}
  • 配置文件需要告诉它读取源的列属性(txt没有列的属性定义)
  • 配置文件并不需要告诉它写入源的列属性(自动翻译)
  • writer.column是按照填写的顺序来接收读取源的数据的,顺序需要确定好

6.执行json配置

执行(在datax/bin下):

python datax.py /Users/cheng/Desktop/comm_attachment.json

部分结果:

2021-11-08 12:04:03.357 [job-0] INFO  JobContainer - PerfTrace not enable!
2021-11-08 12:04:03.358 [job-0] INFO  StandAloneJobContainerCommunicator - Total 10 records, 2741 bytes | Speed 274B/s, 1 records/s | Error 0 records, 0 bytes |  All Task WaitWriterTime 0.000s |  All Task WaitReaderTime 0.000s | Percentage 100.00%
2021-11-08 12:04:03.359 [job-0] INFO  JobContainer - 
任务启动时刻                    : 2021-11-08 12:03:52
任务结束时刻                    : 2021-11-08 12:04:03
任务总计耗时                    :                 10s
任务平均流量                    :              274B/s
记录写入速度                    :              1rec/s
读出记录总数                    :                  10
读写失败总数                    :                   0

7.查看写入源的数据

image-20211108120623141

写入成功


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

相关文章

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.三维数组 三维数组较…

转置算子(transpose)的一种实现

transpose算子也叫做permute算子,根据白嫖有道英汉大词典的结果,他俩都是转置,改变排列顺序的意思。 算法逻辑是: 通过当前输出的一维偏移量(offset)计算输入矩阵对应的高维索引 然后根据参数pos重新排列输出索引,进…

论文笔记——TransPose

目录 摘要 一、前言 二、相关工作 2.1 人体姿态估计 2.2 可解释性 三、TransPose 3.1 网络结构 3.2 分辨率设置 3.3 attentions是定位关键点的依赖 四、实验 4.1 COCO实验数据对比 4.2 迁移到MPII数据对比 4.3 消融实验​编辑 4.4 量化分析 五、总结 摘要 虽然基…

numpy中的transpose函数使用

二维矩阵的transpose函数 : transpose()简单来说,就相当于数学中的转置,在矩阵中,转置就是把行与列相互调换位置; 例如:随机生成一个三行五列的二维矩阵: arr np.aran…

transpose()函数的理解

图1 输入如图1所示语句,输出如下: 图2 由以上两图说明transpose()函数的作用: 假设shape(z,x,y),在RGB图像中可以理解为z代表通道数,x代表图像的第几行,y代表图像的第几列,x和y组合而成所代表的像素构成…

详解Python的transpose函数

数组转置和换轴 import numpy as np >>> arr np.arange(16).reshape((2,2,4)) array([[[ 0, 1, 2, 3],[ 4, 5, 6, 7]],[[ 8, 9, 10, 11],[12, 13, 14, 15]]])>>> arr.transpose((1, 0, 2)) array([[[ 0, 1, 2, 3],[ 8, 9, 10, 11]],[[ 4, 5, …

np.transpose

最近看代码的时候,老是出现np.transpose()这个用法,但是对其中的原理还是不甚了解,今天就来总结一下,以及这个用法对图像的结果及效果。 参数 a:输入数组 axis: int类型的列表,这个参数是可选的。默认情况下&#xff…

np.transpose()函数详解

1. 碰见 numpy.transpose 用于高维数组时挺让人费解,通过分析和代码验证,发现 transpose 用法还是很简单的。说白了就是映射坐标轴 2. 举个例子: x np.arange(12).reshape((2,3,2))创建一个2 * 3 * 2的数组: 使用 numpy.trans…