MaxCompute
更新时间: 2025-12-12 21:50:40
离线同步任务支持MaxCompute数据源,支持该数据源的抽取(Reader)和导入(Writer)。
使用前提
在使用之前需要在“项目配置-项目中心(新)-数据源管理”完成该类型数据源的登记并测试通过(可在控制台的用户手册中查看具体登记详情信息),以及获取该数据源类型或数据的读权限(配置入口在安全中心-项目下的具体成员或角色)。
MaxCompute作为数据来源
以MaxCompute to Hive为例,在数据来源端选择MaxCompute数据源类型及数据源名称,选择需要进行读取的表,具体如下图所示:
读取方式:读取MaxCompute数据的方式。支持基于TableTunnle读取数据和基于JDBC读取数据
- 基于TableTunnle读取数据支持读取全表或表的单个或多个分区数据,不支持数据过滤
- 基于JDBC读取MaxCompute数据支持数据过滤
- TableTunnle读取方式的读取性能优于JDBC读取方式
分区:当选择基于TableTunnle读取数据,支持分区参数设置
- 填写读取的数据所在的分区信息,分区信息栏请输入正则表达式,支持填写参数
- 分区信息若包含下列字符:|、^、$、.、*、\、?、+、{ 、}、[、 ]、( 、),请在字符前添加"\"来表示。示例:“|”字符表示为“\|”
| 示例:分区表test包含dt=202101 & pt=shanghai、dt=202101 & pt=hangzhou、dt=202102 & pt=shanghai、dt=202102 & pt=hangzhou四个分区。如果需要读取dt=202101 & pt=shanghai分区的数据,则分区信息的配置为:dt=202101 & pt=shanghai;如果需要读取dt=202101下所有二级分区的数据,则分区信息的配置为:dt=202101 & pt=.*;如果需要读取所有一级分区下二级分区为pt=shanghai的数据,则分区信息的配置为:dt=.* & pt=shanghai。 |
- 过滤条件:当选择基于JDBC读取数据,支持填写where过滤语句(不含where关键字),通常用作增量同步,支持系统参数和参数组参数
- 流量控制:默认不限速,支持手动配置,单位为条/s
使用MaxCompute需要在任务的高级配置添加参数:ndi.spark.forbid-set-stream-handler-factory=false。
为了使用方便,可以在在ndi-client/conf/ndi.properties中统一添加该参数,但统一添加该参数,需要验证ranger policy对内存的影响,policy较多的环境可能会导致传输作业OOM。
MaxCompute作为数据去向
以Hive to MaxCompute为例,当MaxCompute作为数据去向时,除了填写数据源类型、数据源、表等基础信息之外,对于写入到分区的数据还需要填写分区信息。需要注意的是,写入数据表的分区信息,必须配置到末级分区。分区信息支持填写参数。示例:把数据写入到三级分区表,则分区信息表示为year=2021,month=01,day=01。
写入规则支持INSERT OVERWRITE、INSERT INTO:
- INSERT OVERWRITE:写入前清理已有数据
- INSERT INTO:写入前保留已有数据