引言
数据在异构数据源之间的转移可以抽象成 reader、transformer、writer 的处理,DataX 是阿里云 DataWorks 数据集成的开源版本,实现了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、Hologres、DRDS 等各种异构数据源之间高效的数据同步功能。
github 地址
拆分 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 插件抽象处理了异构数据源之间的数据转移,屏蔽掉数据库的数据结构之间的差异。