104 lines
3.5 KiB
Markdown
104 lines
3.5 KiB
Markdown
通用数据同步框架 DataX
|
|
===================================
|
|
|
|
|
|
|
|
DataX 简介
|
|
-----------------
|
|
|
|
DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 和 OceanBase 等各种异构数据源之间高效的数据同步功能。
|
|
|
|
DataX 本身作为数据同步框架,将不同数据源的同步抽象为从源头数据源读取数据的 Reader 插件,以及向目标端写入数据的 Writer 插件,理论上 DataX 框架可以支持任意数据源类型的数据同步工作。同时 DataX 插件体系作为一套生态系统,每接入一套新数据源该新加入的数据源即可实现和现有的数据源互通。
|
|
|
|
DataX 已经在 github 开源,开源地址是:[github.com/Alibaba/datax](http://github.com/Alibaba/datax),开源的产品不支持 OceanBase 和 DB2 ,OceanBase 产品团队提供针对 OceanBase 和 DB2 的读写插件。
|
|
|
|
DataX 的使用示例
|
|
--------------------
|
|
|
|
DataX 安装后,默认目录在 /home/admin/datax3 。目录下有个文件夹 job ,默认存放数据迁移任务的配置文件,当然也可以自定义目录。
|
|
|
|
每个任务的参数文件是一个 json 格式,主要由一个 reader 和一个 writer 组成。job 文件夹下有个默认的示例任务配置文件 job.json:
|
|
|
|
```javascript
|
|
[admin /home/admin/datax3/job]
|
|
$cat job.json
|
|
{
|
|
"job": {
|
|
"setting": {
|
|
"speed": {
|
|
"byte":10485760
|
|
},
|
|
"errorLimit": {
|
|
"record": 0,
|
|
"percentage": 0.02
|
|
}
|
|
},
|
|
"content": [
|
|
{
|
|
"reader": {
|
|
"name": "streamreader",
|
|
"parameter": {
|
|
"column" : [
|
|
{
|
|
"value": "DataX",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"value": 19890604,
|
|
"type": "long"
|
|
},
|
|
{
|
|
"value": "1989-06-04 00:00:00",
|
|
"type": "date"
|
|
},
|
|
{
|
|
"value": true,
|
|
"type": "bool"
|
|
},
|
|
{
|
|
"value": "test",
|
|
"type": "bytes"
|
|
}
|
|
],
|
|
"sliceRecordCount": 100000
|
|
}
|
|
},
|
|
"writer": {
|
|
"name": "streamwriter",
|
|
"parameter": {
|
|
"print": false,
|
|
"encoding": "UTF-8"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
```
|
|
|
|
|
|
|
|
这个任务的配置文件的 reader 和 writer 类型是一个 stream。这个任务会检测 DataX 是否正确安装,运行之前确保安装 JDK 运行环境。
|
|
|
|
```javascript
|
|
[admin@h07g12092.sqa.eu95 /home/admin/datax3/job]
|
|
$cd ../
|
|
|
|
[admin@h07g12092.sqa.eu95 /home/admin/datax3]
|
|
$bin/datax.py job/job.json
|
|
```
|
|
|
|
|
|
|
|
运行结果如下:
|
|
|
|

|
|
|
|
|
|
**说明**
|
|
|
|
|
|
|
|
这个默认的任务参数关闭了数据流输出,所以看不到输出结果。
|
|
|