DataWorks数据集成支持读写Snowflake。本文为您介绍DataWorks的Snowflake数据同步能力支持情况。
使用限制
Snowflake Reader、Writer使用的驱动版本是snowflake-jdbc:3.20.0,驱动能力详情请参见SnowFlake JDBC驱动程序发布说明。
支持的字段类型
Snowflake Reader和Snowflake Writer支持大部分通用的关系数据库数据类型,例如数字、字符等。但也存在部分类型未被支持的情况,请注意检查您的数据类型,根据具体的数据库进行选择。
字段类型 | 离线读(Snowflake Reader) | 离线写(Snowflake Writer) |
NUMBER | 支持 | 支持 |
DECIMAL | 支持 | 支持 |
NUMERIC | 支持 | 支持 |
INT | 支持 | 支持 |
INTEGER | 支持 | 支持 |
BIGINT | 支持 | 支持 |
SMALLINT | 支持 | 支持 |
TINYINT | 支持 | 支持 |
BYTEINT | 支持 | 支持 |
FLOAT | 支持 | 支持 |
FLOAT4 | 支持 | 支持 |
FLOAT8 | 支持 | 支持 |
DOUBLE | 支持 | 支持 |
DOUBLE PRECISION | 支持 | 支持 |
CHAR | 支持 | 支持 |
VARCHAR | 支持 | 支持 |
STRING | 支持 | 支持 |
TEXT | 支持 | 支持 |
BINARY | 支持 | 支持 |
VARBINARY | 支持 | 支持 |
BOOLEAN | 支持 | 支持 |
DATE | 支持 | 支持 |
TIME | 支持 | 支持 |
TIMESTAMP | 支持 | 支持 |
TIMESTAMP_NTZ | 支持 | 支持 |
TIMESTAMP_LTZ | 支持 | 支持 |
TIMESTAMP_TZ | 不支持 | 支持 |
OBJECT | 不支持 | 不支持 |
ARRAY | 不支持 | 不支持 |
VARIANT | 不支持 | 不支持 |
GEOGRAPHY | 不支持 | 不支持 |
GEOMETRY | 不支持 | 不支持 |
VECTOR | 不支持 | 不支持 |
FILE | 不支持 | 不支持 |
创建数据源
在进行数据同步任务开发时,您需要在DataWorks上创建一个对应的数据源,操作流程请参见数据源管理,详细的配置参数解释可在配置界面查看对应参数的文案提示。
数据同步任务开发
数据同步任务的配置入口和通用配置流程可参见下文的配置指导。
单表离线同步任务配置指导
脚本模式配置的全量参数和脚本Demo请参见下文的附录:脚本Demo与参数说明。
附录:脚本Demo与参数说明
离线任务脚本配置方式
如果使用脚本模式配置单表离线任务,您需要按照统一的脚本格式要求,在任务脚本中编写相应的参数,详情请参见脚本模式配置。以下为您介绍脚本模式下数据源的参数配置详情。
Reader脚本Demo
{
"transform": false,
"type": "job",
"version": "2.0",
"steps": [
{
"stepType": "snowflake",
"parameter": {
"schema": "PUBLIC",
"envType": 0,
"datasource": "snowflake_datasource",
"column": [
"ID",
"NAME"
],
"where": "",
"table": "table"
},
"name": "Reader",
"category": "reader"
},
{
"stepType": "stream",
"parameter": {
"print": true
},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"errorLimit": {
"record": "0"
},
"speed": {
"throttle": false,
"concurrent": 2
}
},
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
}
}Reader脚本参数
参数 | 描述 | 是否必选 | 默认值 |
datasource | 输入Snowflake数据源名称。 | 是 | 无 |
table | 选取的需要同步的表名称。 | 是 | 无 |
schema | 要读取的Snowflake表所在的Schema。 | 是 | 无 |
column | 所配置的表中需要同步的列名集合,使用JSON的数组描述字段信息,默认使用所有列配置,例如[ * ]:
| 是 | 无 |
splitFactor | 切分因子,可以配置同步数据的切分份数。如果配置了多并发,会按照并发数 * splitFactor份来切分。例如,并发数=5,splitFactor=5,则会按照5*5=25份来切分,在5个并发线程上执行。 说明 建议取值范围:1~100,过大会导致内存溢出。 | ||
splitPk | Snowflake Reader进行数据抽取时,如果指定splitPk,表示您希望使用splitPk代表的字段进行数据分片。数据同步系统因此会启动并发任务进行数据同步,这样可以提高数据同步的效率。
| ||
where | 筛选条件,SnowFlake Reader根据指定的column、table和where条件拼接SQL,并根据该SQL进行数据抽取。例如在做测试时,可以将where条件指定为limit 10。 在实际业务场景中,通常会选择当天的数据进行同步,可以将where条件指定为
| 否 | 无 |
fetchSize | 该配置项定义了插件和数据库服务器端每次批量数据获取条数,该值决定了数据集成和服务器端的网络交互次数,能够提升数据抽取性能。 说明 fetchSize值过大(大于2048)可能造成数据同步进程OOM。 | 否 | 1024 |
Writer脚本Demo
{
"transform": false,
"type": "job",
"version": "2.0",
"steps": [
{
"stepType":"stream",
"parameter":{},
"name":"Reader",
"category":"reader"
},
{
"stepType": "snowflake",
"parameter": {
"schema": "PUBLIC",
"envType": 0,
"datasource": "snowflake_datasource",
"column": [
"ID",
"NAME"
],
"table": "TABLE"
},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"executeMode": null,
"errorLimit": {
"record": "0"
},
"speed": {
"concurrent": 2,
"throttle": false
}
},
"order": {
"hops": []
}
}Writer脚本参数
参数 | 描述 | 是否必选 | 默认值 |
datasource | 输入Snowflake数据源名称。 | 是 | 无 |
table | 选取的需要同步的表名称。 | 是 | 无 |
schema | 要写入的Snowflake表所在的Schema。 | 是 | 无 |
column | 目标表需要写入数据的字段,字段之间用英文逗号分隔。例如 | 是 | 无 |
batchSize | 一次性批量提交的记录数大小,该值可以极大减少数据集成与Snowflake的网络交互次数,并提升整体吞吐量。但是该值设置过大可能会造成数据集成运行进程OOM情况。 | 否 | 1024 |