DataX是异构数据源离线同步的工具,支持多种异构数据源之间高效的数据同步。Dataphin系统内嵌了DataX组件,支持通过构建Shell任务调用DataX,实现数据同步。本教程以RDS
MySQL数据库为例,为您介绍基于Dataphin如何调用DataX同步数据。
前提条件
- 已开通RDS MySQL实例,且RDS MySQL实例的网络类型为专有网络。如何开通RDS MySQL实例,请参见创建RDS MySQL实例。
- 已创建RDS MySQL实例的数据库和账号,创建过程中需要您记录数据库名称、用户名和密码。如何创建数据库和账号,请参见创建数据库和账号。
背景信息
Dataphin系统内嵌了DataX组件,在Dataphin中创建和运行DataX任务(Shell任务)即可将DataX调用起来,以实现数据同步。
DataX支持同步数据的数据源包括MySQL、Oracle、SQL Server、PostgreSQL、HDFS、Hive、HBase等。DataX的更多信息,请参见DataX。
使用限制
Shell任务不支持通过内网地址访问RDS MySQL实例。
步骤一:连通RDS MySQL实例与Dataphin间的网络
- 申请RDS MySQL实例的外网地址。如何申请外网地址,请参见申请或释放外网地址。
- 在数据库连接页面,获取RDS MySQL实例的外网地址和端口。
- 添加RDS MySQL实例的外网地址和端口至Dataphin项目空间的沙箱白名单。如何添加沙箱白名单,请参见添加沙箱白名单。
- 添加
0.0.0.0/0
至RDS MySQL实例的白名单。如何添加白名单,请参见设置IP白名单。
注意 完成数据同步后,请立即删除0.0.0.0/0
。
步骤二:创建数据同步的源表和目标表
使用命令行方式连接RDS MySQL实例,请参见
方法三:使用命令行方式连接实例。创建同步数据的源数据表和目标数据表:
- 创建源数据表的代码示例如下。
create table datax_test1( area varchar(255),province varchar(255) );
insert into datax_test1 values('华北','山东省'),('华南','河南省');
- 创建目标数据表的代码示例如下。
create table datax_test2( area varchar(255),province varchar(255) );
步骤三:下载并配置DataX任务的代码模板
- 下载DataX任务的代码模板。
- 配置代码模板中的如下参数后,保存为datax.json至本地。
参数 |
描述 |
{username} |
配置为已创建RDS MySQL实例的用户名,即登录数据库的用户名。 |
{password} |
登录数据库的密码。本教程中配置为前提条件已创建RDS MySQL实例的密码,即登录数据库的密码。 |
{{Public Endpoint}:} |
链接地址。本教程配置为已获取的RDS MySQL实例的外网地址。 |
{DatabaseName} |
数据库名称。本教程配置为前提条件中已创建的RDS MySQL实例的数据库名称。 |
{table_name1} |
源数据表的表名。本教程配置为datax_test1。
|
{table_name2} |
目标数据表的表名。本教程配置为datax_test2。
|
{columnname1} |
数据同步的字段。本教程配置为area。
|
{columnname2} |
数据同步的字段。本教程配置为province。
|
代码模板的代码如下。
{
"job": {
"content": [
{
"reader": {
"name": "mysqlreader",
"parameter": {
"column": [
"{columnname1}",
"{columnname2}"
],
"connection": [
{
"jdbcUrl":
["jdbc:mysql://{Public Endpoint}:3306/{DatabaseName}"],
"table": ["{table_name1}"]
}
],
"password": "{password}",
"username": "{username}"
}
},
"writer": {
"name": "mysqlwriter",
"parameter": {
"column": [
"{columnname1}",
"{columnname2}"
],
"connection": [
{
"jdbcUrl":
"jdbc:mysql://{Public Endpoint}:3306/{DatabaseName}",
"table": ["{table_name2}"]
}
],
"password": "{password}",
"username": "{username}"
}
}
}
],
"setting": {
"speed": {
"channel": "1"
}
}
}
}
步骤四:上传datax.json文件至Dataphin
- 登录Dataphin控制台。
- 在Dataphin控制台页面,选择工作区地域后,单击进入Dataphin>>。
- 在Dataphin首页,单击研发。
- 在数据开发页面,单击数据处理。
- 在数据处理页面的左侧导航栏,单击资源管理图标。
- 在资源管理页面,单击资源管理后的图标。
- 在新建资源对话框中,配置参数后,单击提交。
参数 |
描述 |
类型 |
本教程中需要上传的文件格式为JSON,则类型选择others。
系统支持选择的类型包括 file、 jar、 python和 others,适用场景说明如下:
- 上传的文件格式为XLS、DOC、TXT、CSV,则类型选择为file。
- 上传的文件格式为JAR,则类型选择为jar。
- 上传的文件格式为PY,则类型选择为python。
- 上传的文件格式非XLS、DOC、TXT、CSV、JAR、PY,则类型选择为others。
|
名称 |
本教程中的名称为datax.json。
本教程名称的命名规则如下:
- 名称必须以.json结尾。
- 字母、数字、下划线(_)或半角句号(.)组合组成。
- 不能以数字开头。
|
描述 |
填写资源的描述,例如DataX test。 |
上传文件 |
选择步骤三:下载并配置DataX任务的代码模板中保存至本地的datax.json文件。
|
计算类型 |
本教程中上传的资源(datax.json)用于DataX代码任务中引用,因此选择无归属引擎。
计算类型用于定义资源文件是否需要上传至计算引擎的存储层。Dataphin系统支持的计算类型包括 MaxCompute、 Flink和 无归属引擎,适用场景说明如下:
- 自定义MaxCompute类型的函数时,计算类型选择为MaxCompute。
- 自定义Flink类型的函数时,计算类型选择为Flink。
- 代码任务引用的资源文件,计算类型选择为无归属引擎。
|
选择目录 |
默认为资源管理。
|
- 在提交备注对话框,填写备注信息后,单击确定并提交。
- 发布资源文件至生产环境。
- 在数据开发页面,单击顶部菜单栏的发布。
- 在待发布对象列表页面,单击数据处理页签。
- 在数据处理页签,单击datax.json资源的操作列下的图标。
- 在发布对话框,填写发布名称或备注信息后,单击确定,即可将资源文件发布至生产环境。
- 单击左侧导航栏的发布记录列表。在发布记录列表页面,查看资源文件的发布状态为发布成功即可。
步骤五:创建DataX任务
- 请参见步骤四:上传datax.json文件至Dataphin,进入数据开发页面。
- 在数据开发页面,单击左侧区域的数据处理。
- 在数据处理页面,单击左侧导航栏计算任务图标。
- 在计算任务页面,单击计算任务后的图标,选择。
- 在新建文件对话框,配置参数后,单击确定。
参数 |
描述 |
名称 |
本教程中的名称为DataX。
|
调度类型 |
本教程中选择任务的调度类型为手动节点。
调度类型用于定义任务发布至生产环境的调度方式。Datpahin系统支持的调度类型包括 周期性节点和 手动节点,适用场景说明如下:
- 任务需要参与系统的周期性调度,且需要依赖上游节点,则调度类型选择为周期性节点。
- 任务不需要参与系统的周期性调度,且需要依赖上游节点,则调度类型选择为手动节点。该类型的任务在生产环境的运行需要您手动触发。
|
描述 |
填写对任务的简单描述,例如测试DataX。 |
选择目录 |
默认为计算任务。
|
- 在代码编写页面,编写并运行DataX任务的代码。
代码如下。
@resource_reference{"datax.json"}
python $DATAX_HOME/bin/datax.py datax.json #Dataphin系统已内置DataX的安装目录为DATAX_HOME/bin/datax.py。
其中,
resource_reference{}用于调用已上传的
datax.json资源文件。
- 单击页面右上角的执行,即可运行DataX任务。
运行结果显示的读写失败总数为0时,表示DataX任务同步数据成功。
- 发布DataX任务至生产环境。
- 在计算任务页面,单击顶部菜单栏的发布。
- 在待发布对象列表页面,单击数据处理页签。
- 在数据处理页签,单击DataX任务的操作列下的图标。
- 在发布对话框,填写发布名称或备注信息后,单击确定,即可将DataX任务发布至生产环境。
- 单击左侧导航栏的发布记录列表。在发布记录列表页面,查看DataX任务的发布状态为发布成功即可。