Datax官方笔记总结

#

DataX

DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、SQL Server、Oracle、PostgreSQL、HDFS、Hive、HBase、OTS、ODPS 等各种异构数据源之间高效的数据同步功能。

Features

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

System Requirements

Linux
JDK(1.6以上,推荐1.6)
Python(推荐Python2.6.X)
Apache Maven 3.x (Compile DataX)


Quick Start

工具部署

方法一、直接下载DataX工具包:DataX

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

$ cd {YOUR_DATAX_HOME}/bin

$ python datax.py {YOUR_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}

$ cd {YOUR_DATAX_HOME}/bin
$ python datax.py -r streamreader -w streamwriter
DataX (UNKNOWN_DATAX_VERSION), From Alibaba !
Copyright (C) 2010-2015, Alibaba Group. All Rights Reserved.
Please refer to the streamreader document:
https://github.com/alibaba/DataX/blob/master/streamreader/doc/streamreader.md

Please refer to the streamwriter document:
https://github.com/alibaba/DataX/blob/master/streamwriter/doc/streamwriter.md

Please save the following configuration as a json file and use
python {DATAX_HOME}/bin/datax.py {JSON_FILE_NAME}.json
to run the job.

{
"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

$ cd {YOUR_DATAX_DIR_BIN}
$ python datax.py ./stream2stream.json
同步结束,显示日志如下:

...
2015-12-17 11:20:25.263 [job-0] INFO JobContainer -
任务启动时刻 : 2015-12-17 11:20:15
任务结束时刻 : 2015-12-17 11:20:25
任务总计耗时 : 10s
任务平均流量 : 205B/s
记录写入速度 : 5rec/s
读出记录总数 : 50
读写失败总数 : 0

 


Support Data Channels

目前DataX支持的数据源有:

Reader

Reader实现了从数据存储系统批量抽取数据,并转换为DataX标准数据交换协议,DataX任意Reader能与DataX任意Writer实现无缝对接,达到任意异构数据互通之目的。
RDBMS 关系型数据库

�MysqlReader: 使用JDBC批量抽取Mysql数据集。
OracleReader: 使用JDBC批量抽取Oracle数据集。
SqlServerReader: 使用JDBC批量抽取SqlServer数据集
PostgresqlReader: 使用JDBC批量抽取PostgreSQL数据集
DrdsReader: 针对公有云上DRDS的批量数据抽取工具。
数仓数据存储

ODPSReader: 使用ODPS Tunnel SDK批量抽取ODPS数据。
NoSQL数据存储

OTSReader: 针对公有云上OTS的批量数据抽取工具。
HBaseReader: 针对 HBase 0.94版本的在线数据抽取工具
无结构化数据存储

TxtFileReader: 读取(递归/过滤)本地文件。
FtpReader: 读取(递归/过滤)远程ftp文件。
HdfsReader: 针对Hdfs文件系统中textfile和orcfile文件批量数据抽取工具。
OssReader: 针对公有云OSS产品的批量数据抽取工具。
StreamReader
Writer

Writer实现了从DataX标准数据交换协议,翻译为具体的数据存储类型并写入目的数据存储。DataX任意Writer能与DataX任意Reader实现无缝对接,达到任意异构数据互通之目的。
RDBMS 关系型数据库

MysqlWriter: 使用JDBC(Insert,Replace方式)写入Mysql数据库
OracleWriter: 使用JDBC(Insert方式)写入Oracle数据库
PostgresqlWriter: 使用JDBC(Insert方式)写入PostgreSQL数据库
SqlServerWriter: 使用JDBC(Insert方式)写入sqlserver数据库
DrdsWriter: 使用JDBC(Replace方式)写入Drds数据库
数仓数据存储

ODPSWriter: 使用ODPS Tunnel SDK向ODPS写入数据。
ADSWriter: 使用ODPS中转将数据导入ADS。
NoSQL数据存储

OTSWriter: 使用OTS SDK向OTS Public模型的表中导入数据。
OCSWriter
MongoDBReader:MongoDBReader
MongoDBWriter:MongoDBWriter
无结构化数据存储

TxtFileWriter: 提供写入本地文件功能。
OssWriter: 使用OSS SDK写入OSS数据。
HdfsWriter: 提供向Hdfs文件系统中写入textfile文件和orcfile文件功能。
StreamWriter

 

 

###linux 批量执行job

exec.sh
find ./ -name "*.json" -exec python datax.py {} \;

 

posted @ 2016-12-08 16:47  Enast  阅读(7110)  评论(0编辑  收藏  举报