离线同步任务支持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 OVERWRITEINSERT INTO

  • INSERT OVERWRITE:写入前清理已有数据
  • INSERT INTO:写入前保留已有数据