menu
Is this helpful?

# DataX 引擎

# 一、DataX 简介

DataX 是阿里巴巴发布的开源项目(详情请访问DataX 的 Github 主页 (opens new window)),是一个高效的离线数据同步工具,常用于异构数据源之间的数据同步。

DataX 采用的是 Framework + plugin 架构,数据源读取和写入分别对应 Reader 与 Writer 插件,每一种数据源会有对应的 Reader 或者 Writer,DataX 默认地提供了丰富的 Reader 与 Writer 支持,用于适配多种主流数据源。Framework 用于连接 Reader 和 Writer,并负责同步任务中的数据处理、扭转等核心过程。

DataX 的数据同步任务,主要通过一个配置文件进行控制,其中最主要的配置是 Reader 与 Writer 的配置,这两者分别代表如何从数据源抽取数据,以及如何将抽取的数据写入数据源。通过在配置文件中使用对应数据源的 Reader 与 Writer,即可完成异构数据源的同步。

在 ta-tool 中,我们集成了 DataX 引擎,并且编写了 TE 集群的插件(即 TE 集群的 Reader 与 Writer),借由 TE 集群插件,可以将 TE 集群的作为 DataX 的数据源。

通过 ta-tool 中的 DataX 引擎,您可以完成以下数据同步:

  1. 将其他数据库中的数据,导入到 TE 集群,需要使用 DataX 的已有 Reader 插件与 TE Writer
  2. 将 TE 集群的数据,导出到其他数据库中,需要使用 TE Reader 与 DataX 的已有 Writer 插件

# 二、DataX 引擎的使用方式

如果需要使用 ta-tool 中的 DataX 引擎进行多数据源同步任务,那么首先需要在 TE 集群中编写 DataX 任务的 Config 文件,其次是执行二次开发组件中的 DataX 命令,读取 Config 文件执行数据同步任务。

# 2.1 配置文件样例

DataX 的任务 Config 文件需要是一个 json 文件,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
      }
    }
  }
}

整个配置文件是一个 JSON,最外层"job"元素,其中包含两个元素,分别为"content"和"setting","content"内的元素中包含 reader 和 writer 的信息,可以在本文后续部分查看 TE 集群的 Reader 和 Writer。"setting"中的"speed"内的"channel"是同时执行的任务数。

配置文件中主要需要配置的部分为"content"中的"reader"和"writer"元素,分别配置读取数据的 Reader 插件以及写入数据的 Writer 插件。DataX 预置的 Reader 和 Writer 插件的配置方法,请访问 DataX 的Support Data Channels (opens new window)部分。

# 2.2 执行 DataX 命令

完成配置文件的编写后,可以执行以下命令读取配置文件,并开始数据同步任务。

ta-tool datax_engine -conf <configPath> [--date <date>]

传入的参数为配置文件所在路径。

# 三、TE 集群的 DataX 插件说明

# 3.1 集群内使用的插件

类型 数据源 Reader(读) Writer(写) 文档
TE 系统 TE
自定义表 TE
json 文本 TE

# 3.2 集群外使用的插件

类型 数据源 Reader(读) Writer(写) 文档
TE 系统 TE

# 3.3 DataX 原生插件

类型 数据源 Reader(读) Writer(写) 文档
RDBMS 关系型数据库 MySQL [读](https://github.com/ThinkingDataAnalytics/DataX/blob/master/mysqlreader/doc/mysqlreader.md)、[写](https://github.com/ThinkingDataAnalytics/DataX/blob/master/mysqlwriter/doc/mysqlwriter.md)
Oracle [读](https://github.com/ThinkingDataAnalytics/DataX/blob/master/oraclereader/doc/oraclereader.md)、[写](https://github.com/ThinkingDataAnalytics/DataX/blob/master/oraclewriter/doc/oraclewriter.md)
SQLServer [读](https://github.com/ThinkingDataAnalytics/DataX/blob/master/sqlserverreader/doc/sqlserverreader.md)、[写](https://github.com/ThinkingDataAnalytics/DataX/blob/master/sqlserverwriter/doc/sqlserverwriter.md)
PostgreSQL [读](https://github.com/ThinkingDataAnalytics/DataX/blob/master/postgresqlreader/doc/postgresqlreader.md)、[写](https://github.com/ThinkingDataAnalytics/DataX/blob/master/postgresqlwriter/doc/postgresqlwriter.md)
DRDS [读](https://github.com/ThinkingDataAnalytics/DataX/blob/master/drdsreader/doc/drdsreader.md)、[写](https://github.com/ThinkingDataAnalytics/DataX/blob/master/drdswriter/doc/drdswriter.md)
通用RDBMS (支持所有关系型数据库) [读](https://github.com/ThinkingDataAnalytics/DataX/blob/master/rdbmsreader/doc/rdbmsreader.md)、[写](https://github.com/ThinkingDataAnalytics/DataX/blob/master/rdbmswriter/doc/rdbmswriter.md)
阿里云数仓数据存储 ODPS [读](https://github.com/ThinkingDataAnalytics/DataX/blob/master/odpsreader/doc/odpsreader.md)、[写](https://github.com/ThinkingDataAnalytics/DataX/blob/master/odpswriter/doc/odpswriter.md)
ADS [写](https://github.com/ThinkingDataAnalytics/DataX/blob/master/adswriter/doc/adswriter.md)
OSS [读](https://github.com/ThinkingDataAnalytics/DataX/blob/master/ossreader/doc/ossreader.md)、[写](https://github.com/ThinkingDataAnalytics/DataX/blob/master/osswriter/doc/osswriter.md)
OCS [读](https://github.com/ThinkingDataAnalytics/DataX/blob/master/ocsreader/doc/ocsreader.md)、[写](https://github.com/ThinkingDataAnalytics/DataX/blob/master/ocswriter/doc/ocswriter.md)
NoSQL数据存储 OTS [读](https://github.com/ThinkingDataAnalytics/DataX/blob/master/otsreader/doc/otsreader.md)、[写](https://github.com/ThinkingDataAnalytics/DataX/blob/master/otswriter/doc/otswriter.md)
Hbase0.94 [读](https://github.com/ThinkingDataAnalytics/DataX/blob/master/hbase094xreader/doc/hbase094xreader.md)、[写](https://github.com/ThinkingDataAnalytics/DataX/blob/master/hbase094xwriter/doc/hbase094xwriter.md)
Hbase1.1 [读](https://github.com/ThinkingDataAnalytics/DataX/blob/master/hbase11xreader/doc/hbase11xreader.md)、[写](https://github.com/ThinkingDataAnalytics/DataX/blob/master/hbase11xwriter/doc/hbase11xwriter.md)
Phoenix4.x [读](https://github.com/ThinkingDataAnalytics/DataX/blob/master/hbase11xsqlreader/doc/hbase11xsqlreader.md)、[写](https://github.com/ThinkingDataAnalytics/DataX/blob/master/hbase11xsqlwriter/doc/hbase11xsqlwriter.md)
Phoenix5.x [读](https://github.com/ThinkingDataAnalytics/DataX/blob/master/hbase20xsqlreader/doc/hbase20xsqlreader.md)、[写](https://github.com/ThinkingDataAnalytics/DataX/blob/master/hbase20xsqlwriter/doc/hbase20xsqlwriter.md)
MongoDB [读](https://github.com/ThinkingDataAnalytics/DataX/blob/master/mongodbreader/doc/mongodbreader.md)、[写](https://github.com/ThinkingDataAnalytics/DataX/blob/master/mongodbwriter/doc/mongodbwriter.md)
Hive [读](https://github.com/ThinkingDataAnalytics/DataX/blob/master/hdfsreader/doc/hdfsreader.md)、[写](https://github.com/ThinkingDataAnalytics/DataX/blob/master/hdfswriter/doc/hdfswriter.md)
Cassandra [读](https://github.com/ThinkingDataAnalytics/DataX/blob/master/cassandrareader/doc/cassandrareader.md)、[写](https://github.com/ThinkingDataAnalytics/DataX/blob/master/cassandrawriter/doc/cassandrawriter.md)
无结构化数据存储 TxtFile [读](https://github.com/ThinkingDataAnalytics/DataX/blob/master/txtfilereader/doc/txtfilereader.md)、[写](https://github.com/ThinkingDataAnalytics/DataX/blob/master/txtfilewriter/doc/txtfilewriter.md)
FTP [读](https://github.com/ThinkingDataAnalytics/DataX/blob/master/ftpreader/doc/ftpreader.md)、[写](https://github.com/ThinkingDataAnalytics/DataX/blob/master/ftpwriter/doc/ftpwriter.md)
HDFS [读](https://github.com/ThinkingDataAnalytics/DataX/blob/master/hdfsreader/doc/hdfsreader.md)、[写](https://github.com/ThinkingDataAnalytics/DataX/blob/master/hdfswriter/doc/hdfswriter.md)
Elasticsearch [读](https://github.com/ThinkingDataAnalytics/DataX/blob/master/elasticsearchreader/doc/elasticsearchreader.md)、[写](https://github.com/ThinkingDataAnalytics/DataX/blob/master/elasticsearchwriter/doc/elasticsearchwriter.md)
时间序列数据库 OpenTSDB [读](https://github.com/ThinkingDataAnalytics/DataX/blob/master/opentsdbreader/doc/opentsdbreader.md)
TSDB [读](https://github.com/ThinkingDataAnalytics/DataX/blob/master/tsdbreader/doc/tsdbreader.md)、[写](https://github.com/ThinkingDataAnalytics/DataX/blob/master/tsdbwriter/doc/tsdbhttpwriter.md)