本文为您介绍MaxCompute Reader支持的数据类型、字段映射和数据源等参数及配置示例。
背景信息
MaxCompute Reader插件实现了从MaxCompute读取数据的功能,有关MaxCompute的详细介绍请参见MaxCompute简介。
根据您配置的源头项目、表、分区和表字段等信息,可以通过Tunnel从MaxCompute系统中读取数据。常用的Tunnel命令请参见Tunnel命令操作。
MaxCompute Reader支持读取分区表、非分区表,不支持读取虚拟视图。DataWorks不支持对MaxCompute分区表进行字段映射,您需要对分区字段进行单独配置。例如,读取t0表,其分区为pt=1,ds=hangzhou,则您需要在配置中配置该值。表字段既可以依序指定全部列、部分列,也可以调整列顺序、指定常量字段和指定分区列(分区列不是表字段)。
说明
- MaxCompute Reader不支持数据过滤功能。如果您在数据同步过程中,需要过滤符合条件的数据,请创建新表并写入过滤数据后,同步新表中的数据。
- MaxCompute Reader不支持同步外部表。
支持的字段类型
支持MaxCompute的1.0数据类型、2.0数据类型、Hive兼容数据类型。不同数据类型版本支持的字段类型详情如下。
1.0数据类型支持的字段
字段类型 | 离线读 | 离线写 | 实时写 |
---|---|---|---|
BIGINT | 支持 | 支持 | 支持 |
DOUBLE | 支持 | 支持 | 支持 |
DECIMAL | 支持 | 支持 | 支持 |
STRING | 支持 | 支持 | 支持 |
DATETIME | 支持 | 支持 | 支持 |
BOOLEAN | 支持 | 支持 | 支持 |
ARRAY | 支持 | 支持 | 支持 |
MAP | 支持 | 支持 | 支持 |
STRUCT | 支持 | 支持 | 支持 |
2.0数据类型、Hive兼容数据类型支持的字段
字段类型 | 离线读(MaxCompute Reader) | 离线写(MaxCompute Writer) | 实时写 |
---|---|---|---|
TINYINT | 支持 | 支持 | 支持 |
SMALLINT | 支持 | 支持 | 支持 |
INT | 支持 | 支持 | 支持 |
BIGINT | 支持 | 支持 | 支持 |
BINARY | 支持 | 支持 | 支持 |
FLOAT | 支持 | 支持 | 支持 |
DOUBLE | 支持 | 支持 | 支持 |
DECIMAL(pecision,scale) | 支持 | 支持 | 支持 |
VARCHAR(n) | 支持 | 支持 | 支持 |
CHAR(n) | 不支持 | 支持 | 支持 |
STRING | 支持 | 支持 | 支持 |
DATE | 支持 | 支持 | 支持 |
DATETIME | 支持 | 支持 | 支持 |
TIMESTAMP | 支持 | 支持 | 支持 |
BOOLEAN | 支持 | 支持 | 支持 |
ARRAY | 支持 | 支持 | 支持 |
MAP | 支持 | 支持 | 支持 |
STRUCT | 支持 | 支持 | 支持 |
数据类型转换说明
MaxCompute Reader针对MaxCompute的类型转换列表,如下所示。
类型分类 | 数据集成配置类型 | 数据库数据类型 |
---|---|---|
整数类 | LONG | BIGINT、INT、TINYINT和SMALLINT |
布尔类 | BOOLEAN | BOOLEAN |
日期时间类 | DATE | DATETIME、TIMESTAMP和DATE |
浮点类 | DOUBLE | FLOAT、DOUBLE和DECIMAL |
二进制类 | BYTES | BINARY |
复杂类 | STRING | ARRAY、MAP和STRUCT |
参数说明
参数 | 描述 | 是否必选 | 默认值 |
---|---|---|---|
datasource | 数据源名称。脚本模式支持添加数据源,该配置项填写的内容必须与添加的数据源名称保持一致。 | 是 | 无 |
table | 读取数据表的表名称(大小写不敏感)。 | 是 | 无 |
partition | 读取的数据所在的分区信息。
例如,分区表test包含pt=1,ds=hangzhou、pt=1,ds=shanghai、pt=2,ds=hangzhou、pt=2,ds=beijing四个分区,则读取不同分区数据的配置如下:
此外,您还可以根据实际需求设置分区数据的获取条件:
说明 /*query*/ 表示将其后填写的内容识别为一个where条件。 | 如果表为分区表,则必填。如果表为非分区表,则不能填写。 | 无 |
column | 读取MaxCompute源头表的列信息。例如表test的字段为id、name和age:
| 是 | 无 |
向导开发介绍
打开新建的数据同步节点,即可进行同步任务的配置,详情请参见通过向导模式配置离线同步任务。
您需要在数据同步任务的编辑页面进行以下配置:
- 选择数据源。 配置同步任务的数据来源和数据去向。
参数 描述 数据源 即上述参数说明中的datasource,通常填写您配置的数据源名称。 开发项目名 默认不可以修改。 说明 仅标准模式的工作空间会显示该配置。生产项目名 默认不可以修改。 表 即上述参数说明中的table,选择需要同步的表。 分区信息 如果您每日增量数据限定在对应日期的分区中,可以使用分区进行每日增量。例如,配置分区pt的值为${bizdate}。 说明 DataWorks不支持对MaxCompute分区表进行字段映射,您需要单独配置分区字段。说明 如果是指定所有的列,可以在column配置,例如"column": [""]
。partition支持配置多个分区和通配符的配置方法:"partition":"pt=20140501/ds=*"
代表ds中的所有的分区。"partition":"pt=top?"
中的问号(?)代表前面的字符是否存在,指pt=top和pt=to两个分区。
您可以输入需要同步的分区列,例如MaxCompute的分区为pt=${bdp.system.bizdate},您可以直接添加分区名称pt至源表字段中(可能会有未识别的标志,直接忽视进行下一步):- 如果需要同步所有的分区,配置分区值为pt=*。
- 如果需要同步某个分区,可以直接选择您要同步的时间值。
- 字段映射,即上述参数说明中的column。 左侧的源头表字段和右侧的目标表字段为一一对应的关系。单击添加一行可以增加单个字段,鼠标放至需要删除的字段上,即可单击删除图标进行删除。
参数 描述 同名映射 单击同名映射,可以根据名称建立相应的映射关系,请注意匹配数据类型。 同行映射 单击同行映射,可以在同行建立相应的映射关系,请注意匹配数据类型。 取消映射 单击取消映射,可以取消建立的映射关系。 自动排版 可以根据相应的规律自动排版。 手动编辑源表字段 请手动编辑字段,一行表示一个字段,首尾空行会被采用,其它空行会被忽略。 添加一行 单击添加一行,您可以输入以下类型的字段: - 可以输入常量,输入的值需要使用英文单引号,如'abc’、'123’等。
- 可以配合调度参数使用,例如${bizdate}等。
- 如果您输入的值无法解析,则类型显示为未识别。
- 通道控制。
参数 描述 任务期望最大并发数 数据同步任务内,可以从源并行读取或并行写入数据存储端的最大线程数。向导模式通过界面化配置并发数,指定任务所使用的并行度。 同步速率 设置同步速率可以保护读取端数据库,以避免抽取速度过大,给源库造成太大的压力。同步速率建议限流,结合源库的配置,请合理配置抽取速率。 错误记录数 错误记录数,表示脏数据的最大容忍条数。 分布式处理能力 数据同步时,可以将任务切片分散到多台执行节点上并发执行,提高同步速率。该模式下,配置较大任务并发数会增加数据存储访问压力,如需使用该功能,请提前评估数据存储的访问负载。该功能仅支持在独享数据集成资源组配置,详情请参见独享数据集成资源组和新增和使用独享数据集成资源组。
脚本开发介绍
配置一个从MaxCompute抽取数据到本地的作业,使用脚本开发的详情请参见通过脚本模式配置离线同步任务。
重要 实际运行时,请删除下述代码中的注释。
{
"type":"job",
"version":"2.0",
"steps":[
{
"stepType":"odps",//插件名。
"parameter":{
"partition":[],//读取数据所在的分区。
"isCompress":false,//是否压缩。
"datasource":"",//数据源。
"column":[//源头表的列信息。
"id"
],
"emptyAsNull":true,
"table":""//表名。
},
"name":"Reader",
"category":"reader"
},
{
"stepType":"stream",
"parameter":{
},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"//错误记录数。
},
"speed":{
"throttle":true,//当throttle值为false时,mbps参数不生效,表示不限流;当throttle值为true时,表示限流。
"concurrent":1, //作业并发数。
"mbps":"12"//限流
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}
如果您需要指定MaxCompute的Tunnel Endpoint,可以通过脚本模式手动配置数据源。将上述示例中的
"datasource":"",
替换为数据源的具体参数,示例如下。 "accessId":"*******************",
"accessKey":"*******************",
"endpoint":"http://service.eu-central-1.maxcompute.aliyun-inc.com/api",
"odpsServer":"http://service.eu-central-1.maxcompute.aliyun-inc.com/api",
"tunnelServer":"http://dt.eu-central-1.maxcompute.aliyun.com",
"project":"*****",