更新时间:2024-10-18 GMT+08:00
分享

源端为Oracle,目的端为Hudi

该链路目前仅支持整库场景。

该链路目前需申请白名单后才能使用。如需使用该链路,请联系客服或技术支持人员

约束限制

整库场景

  1. 源端配置。
    1. 添加数据源,选择需要迁移的Oracle表。
      图1 选择库表

      库与表均支持自定义选择,即可选择一库一表,也可选择多库多表。

  2. 目标端配置。
    图2 配置目标端参数
    • 源库表和目标匹配策略:
      • 库匹配策略:配置目标数据库的匹配策略,使数据按照规划迁移至目标库。
        用户需要提前创建对应数据库,否则可能导致后续自动建表失败。
        • 与来源库同名:会迁移至目的端对应与来源库同名的数据库中。
        • 自定义:支持用户指定目的端库名,也支持通过#{source_db_name}给源数据库名添加自定义字段变成目的端Hudi表的库名。
      • 表匹配策略:配置目标数据表的匹配策略,使数据按照规划迁移至目标表。

        用户不需要提前创建对应数据表,后续作业时自动建表。

        • 与来源表同名:会迁移至目的端对应与来源表同名的表中。
        • 自定义:支持用户指定目的端表名,也支持通过内置参数#{source_table_name}给源表名添加前后缀,变成目的端Hudi表的表名。
    • 目标数据源配置:
      • 数据存储路径:Hudi数据存储的基础路径,只对自动建表生效。每张目的端表会在基础路径下创建子目录,支持HDFS或OBS路径。
        • OBS格式:obs://{桶名}。
        • HDFS格式:/tmp。
      • Hudi表属性全局配置:单击“查看编辑”配置Hudi表属性全局配置。

        “Hudi全局配置”作用于所有Hudi表,可配置的Hudi配置项参考Hudi官网介绍

        “Hudi全局配置”优先级低于单表“表属性编辑”中的配置,存在相同配置项时会被覆盖。

      • 源表与目标表映射:Oracle为源端时,暂不支持迁移CLOB、NCLOB和BLOB类型。
        图3 配置源表与目标表映射
        • Hudi表必须设置“同步主键”,在源端为非主键表时,必须在字段映射阶段手动勾选主键。
        • 表属性编辑:单击操作列“表属性编辑”可配置Hudi表属性,包含表类型,分区类型及表自定义属性。

          表类型:MERGE_ON_READ、COPY_ON_WRITE。

          分区类型:无分区、时间分区、自定义分区。

          其中时间分区需要用户指定一个源端表名,选择一个时间转换格式。

          比如时间分区用户指定一个源端表名src_col_1,选择一个时间转换格式,日(yyyyMMdd)、月(yyyyMM)、年(yyyy),自动建表时会在Hudi表默认创建一个cdc_partition_key的字段,系统会根据配置的时间转换格式将源端字段(src_col_1)的值格式化后写入cdc_partition_key中。

          自定义分区:选择源端的某个字段或多个字段作为分区,多个分区通过英文半角逗号”,”分割。

        • 附加字段编辑:单击操作列“附加字段编辑”可为迁移后的Hudi表中增加自定义字段,附加字段会成为一个新的字段加入到Hudi表的建表中。
          表1 附加字段值支持情况

          类型

          示例

          常量

          -

          内置变量

          • 源端host ip地址:source.host
          • 源端schema名称:mgr.source.schema
          • 源端table名称:mgr.source.table
          • 目的端schema名称:mgr.target.schema
          • 目的端table名称:mgr.target.table

          字段变量

          -

          udf方法

          • substring(#col, pos[, len]): 截取源端col列的子串, 范围在[pos, pos+len)。
          • date_format(#col, time_format[, src_tz, dst_tz]): 将源端col列按time_format格式化, 可选转换时区。
          • now([tz]): 获取指定时区的当前时间。
          • if(cond_exp, str1, str2): 满足条件表达式cond_exp时返回str1, 否则返回str2。
          • concat(#col[, #str, ...]): 拼接多个参数, 可为源端列或字符串。
          • from_unixtime(#col[, time_format]): 将unix时间戳按time_format格式化。
          • unix_timestamp(#col[, precision, time_format]): 将时间转成unix时间戳, 可显式定义时间格式及转换后精度。

          对于新建的表,用户可以在已有的源表字段基础上添加附加字段,可以自定义字段名(如custom_defined_col)、选择字段类型、填写字段值。

          用户可同时添加多个附加字段。

        • 自动建表:单击“自动建表”为列表中的表按照已配置规则自动建表。成功后表建立方式会显示为使用已有表。

相关文档