DataX 数据同步框架

194 阅读1分钟

引言

数据在异构数据源之间的转移可以抽象成 reader、transformer、writer 的处理,DataX 是阿里云 DataWorks 数据集成的开源版本,实现了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、Hologres、DRDS 等各种异构数据源之间高效的数据同步功能。

github 地址

首页:github.com/alibaba/Dat…

开发:github.com/alibaba/Dat…

拆分 DataX 逻辑执行模型

Job:描述一个完整的转移任务,从一个数据源到另一个数据源需要的参数。 JobContainer:Job 执行器,用于拆分、调度 Job,覆盖前置、后置处理。 Task:描述 Job 拆分后的同质化最小单元,用于并行执行。 TaskGroup:描述一组 Task 集合。 TaskGroupContainer:TaskGroup 执行器。

选择 DataX 的运行模式:

  • Standalone: 单进程运行,没有外部依赖。
  • Local: 单进程运行,统计信息、错误信息汇报到集中存储。
  • Distrubuted: 分布式多进程运行,依赖DataX Service服务。

reader、transformer、writer

reader:根据数据库访问路径、账户密码等信息登录数据库读取。 transformer:根据用户自定义的 Facts、Rule 和实现方法处理数据。 writer:根据数据库访问路径、账户密码等信息登录数据库写入。

{
  "job": {
    "content": [
      {
        "reader": {
          "name": "odpsreader",
          "parameter": {
            "accessKey": "",
            "accessId": "",
            "column": [""],
            "isCompress": "",
            "odpsServer": "",
            "partition": [
              ""
            ],
            "project": "",
            "table": "",
            "tunnelServer": ""
          }
        },
        "writer": {
          "name": "oraclewriter",
          "parameter": {
            "username": "",
            "password": "",
            "column": ["*"],
            "connection": [
              {
                "jdbcUrl": "",
                "table": [
                  ""
                ]
              }
            ]
          }
        }
      }
    ]
  }
}

总结

综上,DataX 插件抽象处理了异构数据源之间的数据转移,屏蔽掉数据库的数据结构之间的差异。