MaxCompute
离线同步任务支持MaxCompute数据源,支持该数据源的抽取(Reader)和导入(Writer),当前支持的版本为:MaxCompute 2.0。
使用前提
在使用之前需要在项目中心(新)完成MaxCompute数据源的登记并测试通过。
数据源登记过程中,需要填写如下信息:
- 数据源名称:必填。自定义MaxCompute数据源名称
- 数据源标识:仅允许包含英文小写、数字、下划线,只允许英文小写开头,最大长度为64个字符。平台内唯一,保存数据源后数据标识不可修改
- 归属项目:必填。由于元数据中心是项目组级别,因此此处支持选择项目组下的项目,默认为当前项目名称
- 负责人:必填。默认为当前创建人员
- 协助管理员:必填。同负责人,有该数据源的管理权限,包括编辑、设置“源系统账号映射”。可在安全中心为自己或其他人设置该数据源的使用权限
- ODPS Endpoint:必填。目标MaxCompute项目所属地域的Endpoint
- Tunnel Endpoint:可选。当使用了MaxCompute的Tunnel服务时,可填写连接地址为Tunnel Endpoint,取值由地域及网络连接方式决定
- ODPS项目名称:必填。待连接的目标MaxCompute项目名称。此处为MaxCompute项目名称,非工作空间名称。可以登录MaxCompute控制台,左上角切换地域后,在项目管理页签中查看到具体的MaxCompute项目名称
- AccessKey ID:必填。具备目标MaxCompute项目访问权限的AccessKey ID
- AccessKey Secret:必填。AccessKey ID对应的AccessKey Secret
- 自定义属性:支持添加数据源的其它配置
唯一性校验规则:基于ODPS Endpoint进行校验。 |
数据源配置完成后,需点击测试连接按钮进行测试,测试通过后才可使用。
除了数据源需要准备之外,进行离线同步任务创建和数据源的使用都需要在安全中心-功能权限中添加相应的权限(可参考数据传输权限、元数据中心权限)。
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:写入前保留已有数据