Amazon Redshift数据源为您提供读取和写入Amazon Redshift的双向通道,方便您后续可以通过向导模式和脚本模式配置数据同步任务。本文为您介绍Amazon Redshift数据同步能力支持情况。
支持的Amazon Redshift版本
Amazon Redshift使用的驱动版本是redshift-jdbc4.2 Driver 2.1.0.1,驱动能力详情请参见为Amazon Redshift配置JDBC驱动程序版本。
支持的字段类型
Amazon Redshift的字段类型请参见Amazon Redshift官方文档。下面为您罗列当前主要字段的支持情况。
|
Amazon Redshift类型 |
SQL类型 |
Java类型 |
|
BIGINT |
SQL_BIGINT |
长整型 |
|
BOOLEAN |
SQL_BIT |
Boolean |
|
CHAR |
SQL_CHAR |
字符串 |
|
DATE |
SQL_TYPE_DATE |
java.sql.Date |
|
DECIMAL |
SQL_NUMERIC |
BigDecimal |
|
DOUBLE PRECISION |
SQL_DOUBLE |
Double |
|
GEOMETRY |
SQL_ LONGVARBINARY |
byte[] |
|
INTEGER |
SQL_INTEGER |
整数 |
|
OID |
SQL_BIGINT |
长整型 |
|
SUPER |
SQL_LONGVARCHAR |
字符串 |
|
REAL |
SQL_REAL |
Float |
|
SMALLINT |
SQL_SMALLINT |
短型 |
|
TEXT |
SQL_VARCHAR |
字符串 |
|
TIME |
SQL_TYPE_TIME |
java.sql.Time |
|
TIMETZ |
SQL_TYPE_TIME |
java.sql.Time |
|
TIMESTAMP |
SQL_TYPE_ TIMESTAMP |
java.sql.Timestamp |
|
TIMESTAMPTZ |
SQL_TYPE_ TIMESTAMP |
java.sql.Timestamp |
|
VARCHAR |
SQL_VARCHAR |
字符串 |
数据同步前准备
在DataWorks上进行数据同步前,您需要将数据源的网络与数据集成使用的Serverless资源组(推荐)或独享数据集成资源组打通,使之通过内网地址进行访问。网络打通的具体方法可参考:网络连通方案。
创建数据源
在进行数据同步任务开发时,您需要在DataWorks上创建一个对应的数据源,操作流程请参见数据源管理,详细的配置参数解释可在配置界面查看对应参数的文案提示。
以下对Amazon Redshift数据源的几个配置项进行说明。
-
JDBC URL:请填写JDBC连接串,包含IP、端口号、数据库和链接参数。支持公网IP和私网IP,如果使用公网IP,请确保数据集成资源组能够正常访问Amazon Redshift所在的主机。
-
用户名:请填写Amazon Redshift数据库的用户名。
-
密码:请填写Amazon Redshift数据库对应用户的密码。
数据同步任务开发
数据同步任务的配置入口和通用配置流程可参见下文的配置指导。
单表离线同步任务配置指导
-
脚本模式配置的全量参数和脚本Demo请参见下文的附录:脚本Demo与参数说明。
附录:脚本Demo与参数说明
离线任务脚本配置方式
如果您配置离线任务时使用脚本模式的方式进行配置,您需要按照统一的脚本格式要求,在任务脚本中编写相应的参数,详情请参见脚本模式配置,以下为您介绍脚本模式下数据源的参数配置详情。
Reader脚本Demo
{
"stepType": "redshift"
"parameter":
{
"datasource":"redshift_datasource",
"table": "redshift_table_name",
"where": "xxx=3",
"splitPk": "id",
"column":
[
"id",
"table_id",
"table_no",
"table_name",
"table_status"
]
},
"name": "Reader",
"category": "reader"
}
Reader脚本参数
|
脚本参数名 |
描述 |
是否必选 |
默认值 |
|
datasource |
数据源名称,脚本模式支持添加数据源,此配置项填写的内容必须与添加的数据源名称保持一致。 |
是 |
无 |
|
table |
选取的需要同步的表名称。 |
是 |
无 |
|
column |
需要同步的字段列表,字段之间用英文逗号分隔。例如"column":["id","name","age"]。 如果要同步全部列,使用(*)表示,例如"column":["*"]。 |
是 |
无 |
|
where |
筛选条件,根据指定的column、table和where条件拼接SQL,并根据该SQL进行数据抽取。例如在做测试时,可以将where条件指定为limit 10。 在实际业务场景中,通常会选择当天的数据进行同步,可以将where条件指定为gmt_create>$bizdate:
|
否 |
无 |
|
splitPk |
如果指定splitPk,表示您希望使用splitPk代表的字段进行数据分片。数据同步系统会启动并发任务进行数据同步,以提高数据同步的效率。 |
否 |
无 |
Writer脚本Demo
{
"stepType": "redshift",//插件名。
"parameter":
{
"postSql":["delete from XXX;"],
"preSql":["delete from XXX;"],
"datasource":"redshift_datasource",//数据源名。
"table": "redshift_table_name",//表名。
"writeMode": "insert",
"batchSize": 2048,
"column":
[
"id",
"table_id",
"table_no",
"table_name",
"table_status"
]
},
"name": "Writer",
"category": "writer"
}
Writer脚本参数
|
脚本参数名 |
描述 |
是否必选 |
默认值 |
|
datasource |
数据源名称,脚本模式支持添加数据源,此配置项填写的内容必须与添加的数据源名称保持一致。 |
是 |
无 |
|
table |
需要写入的表名称。 |
是 |
无 |
|
column |
目标表需要写入数据的字段,字段之间用英文逗号分隔。例如"column":["id","name","age"]。 如果要依次写入全部列,使用(*)表示,例如"column":["*"]。 |
是 |
无 |
|
preSql |
执行数据同步任务之前,需率先执行的SQL语句。目前向导模式仅允许执行一条SQL语句,脚本模式可以支持多条SQL语句,例如清除旧数据。 |
否 |
无 |
|
postSql |
执行数据同步任务之后执行的SQL语句。目前向导模式仅允许执行一条SQL语句,脚本模式可以支持多条SQL语句,例如加上某个时间戳。 |
否 |
无 |
|
batchSize |
每批次导入的最大数据条数。 |
否 |
2048 |
|
writeMode |
目前只支持insert。 |
否 |
insert |