更新时间:2024-12-18 GMT+08:00

新建表/文件迁移作业

操作场景

CDM可以实现在同构、异构数据源之间进行表或文件级别的数据迁移,支持表/文件迁移的数据源请参见支持的数据源

约束限制

  • 记录脏数据功能依赖于OBS服务。
  • 作业导入时,JSON文件大小不超过1MB。
  • 单文件传输大小不超过1TB。
  • 配置源端和目的端参数时,字段名不可包含&和%。

前提条件

操作步骤

  1. 进入CDM主界面,单击左侧导航上的“集群管理”,选择集群后的“作业管理”
  2. 选择表/文件迁移 > 新建作业,进入作业配置界面。

    图1 新建表/文件迁移的作业

  3. 选择源连接、目的连接:

    • 作业名称:用户自定义任务名称,名称由中文、数字、字母、中划线、下划线、点号,且首字符不能是中划线或点号组成,长度必须在1到240个字符之间,例如“oracle2rds_t”
    • 源连接名称:选择待迁移数据的数据源,作业运行时将从此端复制导出数据。
    • 目的连接名称:选择将数据迁移到哪个数据源,作业运行时会将数据导入此端。

  4. 选择源连接后,配置作业参数,例如迁移MySQL到DWS时,如图2所示。

    图2 新建作业

    每种数据源对应的作业参数不一样,其它类型数据源的作业参数请根据表1表2选择。

    表1 源端作业参数说明

    源端类型

    说明

    参数配置

    OBS

    支持以CSV、JSON或二进制格式抽取数据,其中二进制方式不解析文件内容,性能快,适合文件迁移。

    参见配置OBS源端参数

    • MRS HDFS
    • FusionInsight HDFS
    • Apache HDFS

    支持以CSV、Parquet或二进制格式抽取HDFS数据,支持多种压缩格式。

    参见配置HDFS源端参数

    • MRS HBase
    • FusionInsight HBase
    • Apache HBase
    • CloudTable

    支持从MRS、FusionInsight HD、开源Apache Hadoop的HBase,或CloudTable服务导出数据,用户需要知道HBase表的所有列族和字段名。

    参见配置HBase/CloudTable源端参数

    • MRS Hive
    • FusionInsight Hive
    • Apache Hive

    支持从Hive导出数据,使用JDBC接口抽取数据。

    Hive作为数据源,CDM自动使用Hive数据分片文件进行数据分区。

    参见配置Hive源端参数

    DLI

    支持从DLI导出数据。

    参见配置DLI源端参数

    • FTP
    • SFTP

    支持以CSV、JSON或二进制格式抽取FTP/SFTP的数据。

    参见配置FTP/SFTP源端参数

    • HTTP

    用于读取一个公网HTTP/HTTPS URL的文件,包括第三方对象存储的公共读取场景和网盘场景。

    当前只支持从HTTP URL导出数据,不支持导入。

    参见配置HTTP源端参数

    数据仓库 DWS

    支持从数据仓库 DWS导出数据。

    参见配置DWS源端参数

    SAP HANA

    支持从SAP HANA导出数据。

    参见配置SAP HANA源端参数

    • 云数据库 PostgreSQL
    • 云数据库 SQL Server
    • Microsoft SQL Server
    • PostgreSQL

    支持从云端的数据库服务导出数据。

    这些非云服务的数据库,既可以是用户在本地数据中心自建的数据库,也可以是用户在ECS上部署的,还可以是第三方云上的数据库服务。

    从这些数据源导出数据时,CDM使用JDBC接口抽取数据,源端作业参数相同,详细请参见配置PostgreSQL/SQL Server源端参数

    MySQL

    支持从MySQL导出数据。

    参见配置MySQL源端参数

    Oracle

    支持从Oracle导出数据。

    参见配置Oracle源端参数

    分库

    支持从分库导出数据。

    参见配置分库源端参数

    • MongoDB
    • 文档数据库服务(DDS)

    支持从MongoDB或DDS导出数据。

    参见配置MongoDB/DDS源端参数

    Redis

    支持从开源Redis导出数据。

    参见配置Redis源端参数

    数据接入服务(DIS)

    仅支持导出数据到云搜索服务。

    参见配置DIS源端参数

    • Apache Kafka
    • DMS Kafka
    • MRS Kafka

    仅支持导出数据到云搜索服务。

    参见配置Kafka/DMS Kafka源端参数

    • 云搜索服务
    • Elasticsearch

    支持从云搜索服务或Elasticsearch导出数据。

    参见配置Elasticsearch/云搜索服务源端参数

    MRS Hudi

    支持从MRS Hudi导出数据。

    参见配置MRS Hudi源端参数

    MRS ClickHouse

    支持从MRS ClickHouse导出数据。

    参见配置MRS ClickHouse源端参数

    神通(ST)

    支持从神通(ST)导出数据。

    参见配置神通(ST)源端参数

    达梦数据库 DM

    支持从达梦数据库 DM导出数据。

    参见配置达梦数据库 DM源端参数

  5. 配置目的端作业参数,根据目的端数据类型配置对应的参数,具体如表2所示。

    表2 目的端作业参数说明

    目的端类型

    说明

    参数配置

    OBS

    支持使用CSV或二进制格式批量传输大量文件到OBS。

    参见配置OBS目的端参数

    MRS HDFS

    导入数据到HDFS时,支持设置压缩格式。

    参见配置HDFS目的端参数

    MRS HBase

    CloudTable

    支持导入数据到HBase,创建新HBase表时支持设置压缩算法。

    参见配置HBase/CloudTable目的端参数

    MRS Hive

    支持快速导入数据到MRS的Hive。

    参见配置Hive目的端参数

    • MySQL
    • SQL Server
    • PostgreSQL

    支持导入数据到云端的数据库服务。

    使用JDBC接口导入数据,参见配置MySQL/SQL Server/PostgreSQL目的端参数

    DWS

    支持导入数据到数据仓库 DWS。

    参见配置DWS目的端参数

    Oracle

    支持导入数据到Oracle。

    参见配置Oracle目的端参数

    数据湖探索(DLI)

    支持导入数据到DLI服务。

    参见配置DLI目的端参数

    Elasticsearch或云搜索服务

    支持导入数据到云搜索服务。

    参见配置Elasticsearch/云搜索服务(CSS)目的端参数

    MRS Hudi

    支持快速导入数据到MRS的Hudi。

    参见配置MRS Hudi目的端参数

    MRS Clickhouse

    支持快速导入数据到MRS的Clickhouse。

    参见配置MRS ClickHouse目的端参数

    MongoDB

    支持快速导入数据到MongoDB。

    参见配置MongoDB目的端参数

  6. 作业参数配置完成后,单击“下一步”进入字段映射的操作页面。

    如果是文件类数据源(FTP/SFTP/HDFS/OBS)之间相互迁移数据,且源端“文件格式”配置为“二进制格式”(即不解析文件内容直接传输),则没有字段映射这一步骤。

    其他场景下,CDM会自动匹配源端和目的端数据表字段,需用户检查字段映射关系和时间格式是否正确,例如:源字段类型是否可以转换为目的字段类型。

    图3 字段映射
    • 如果字段映射关系不正确,用户可以通过拖拽字段来调整映射关系。
    • 如果在字段映射界面,CDM通过获取样值的方式无法获得所有列(例如从HBase/CloudTable/MongoDB导出数据时,CDM有较大概率无法获得所有列,以及SFTP/FTP迁移数据到DLI的链路场景),则可以单击后选择“添加新字段”来手动增加,确保导入到目的端的数据完整。
    • 关系数据库、Hive、MRS Hudi及DLI做源端时,不支持获取样值功能。
    • 支持通过字段映射界面的,可自定义添加常量、变量及表达式。
    • 当作业源端为OBS、迁移CSV文件时,并且配置“解析首行为列名”参数的场景下显示列名。
    • SQLServer作为目的端数据源时,不支持timestamp类型字段的写入,需修改为其他时间类型字段写入(如datatime)。
    • Hive作为源端数据源时,支持array、map类型的数据读取。
    • 当使用二进制格式进行文件到文件的迁移时,没有字段映射这一步。
    • 如果是导入到数据仓库服务(DWS),则还需在目的字段中选择分布列,建议按如下顺序选取分布列:
      1. 有主键可以使用主键作为分布列。
      2. 多个数据段联合做主键的场景,建议设置所有主键作为分布列。
      3. 在没有主键的场景下,如果没有选择分布列,DWS会默认第一列作为分布列,可能会有数据倾斜风险。

  7. CDM支持字段内容转换,如果需要可单击操作列下,进入转换器列表界面,再单击“新建转换器”

    图4 新建转换器

    CDM支持以下转换器:

    • 脱敏:隐藏字符串中的关键数据。
      例如要将“12345678910”转换为“123****8910”,则参数配置如下:
      • “起始保留长度”“3”
      • “结尾保留长度”“4”
      • “替换字符”“*”
    • 去前后空格:自动删除字符串前后的空值。
    • 字符串反转:自动反转字符串,例如将“ABC”转换为“CBA”
    • 字符串替换:将选定的字符串替换。
    • 表达式转换:使用JSP表达式语言(Expression Language)对当前字段或整行数据进行转换,详细请参见字段转换
    • 去换行:将字段中的换行符(\n、\r、\r\n)删除。

    作业源端开启“使用SQL语句”参数时不支持配置转换器。

  8. 单击“下一步”配置任务参数,单击“显示高级属性”展开可选参数。

    图5 任务参数
    各参数说明如表3所示。
    表3 任务配置参数

    参数

    说明

    取值样例

    作业失败重试

    如果作业执行失败,可选择自动重试三次或者不重试。

    建议仅对文件类作业或启用了导入阶段表的数据库作业配置自动重试,避免自动重试重复写入数据导致数据不一致。

    说明:

    如果通过DataArts Studio数据开发使用参数传递并调度CDM迁移作业时,不能在CDM迁移作业中配置“作业失败重试”参数,如有需要请在数据开发中的CDM节点配置“失败重试”参数。

    不重试

    作业分组

    选择作业的分组,默认分组为“DEFAULT”。在CDM“作业管理”界面,支持作业分组显示、按组批量启动作业、按分组导出作业等操作。

    DEFAULT

    是否定时执行

    如果选择“是”,可以配置作业自动启动的时间、重复周期和有效期,具体请参见配置CDM作业定时任务

    说明:

    如果通过DataArts Studio数据开发调度CDM迁移作业,此处也配置了定时任务,则两种调度均会生效。为了业务运行逻辑统一和避免调度冲突,推荐您启用数据开发调度即可,无需配置CDM定时任务。

    抽取并发数

    当前任务从源端进行读取最大线程数。

    说明:

    由于数据源限制,实际执行时并发的线程数可能小于等于此处配置的并发数,如CSS,ClickHouse数据源不支持多并发抽取。

    CDM通过数据迁移作业,将源端数据迁移到目的端数据源中。其中,主要运行逻辑如下:
    1. 数据迁移作业提交运行后,CDM会根据作业配置中的“抽取并发数”参数,将每个作业拆分为多个Task,即作业分片。
      说明:

      不同源端数据源的作业分片维度有所不同,因此某些作业可能出现未严格按作业“抽取并发数”参数分片的情况。

    2. CDM依次将Task提交给运行池运行。根据集群配置管理中的“最大抽取并发数”参数,超出规格的Task排队等待运行。

    因此作业抽取并发数和集群最大抽取并发数参数设置为适当的值可以有效提升迁移速度。

    作业抽取并发数的配置原则如下:

    1. 迁移的目的端为文件时,CDM不支持多并发,此时应配置为单进程抽取数据。
    2. 表中每行数据大小为1MB以下的可以设置多并发抽取,超过1MB的建议单线程抽取数据。
    3. 作业抽取并发数可参考集群最大抽取并发数配置,但不建议超过集群最大抽取并发数上限。
    4. 目的端为DLI数据源时,抽取并发数建议配置为1,否则可能会导致写入失败。

    其中,集群最大抽取并发数的设置与CDM集群规格有关,并发数上限建议配置为vCPU核数*2。例如8核16GB规格集群的最大抽取并发数上限为16。

    1

    加载(写入)并发数

    加载(写入)时并发执行的Loader数量。

    仅当HBase或Hive作为目的数据源时该参数才显示。

    3

    分片重试次数

    每个分片执行失败时的重试次数,为0表示不重试。

    0

    是否写入脏数据

    选择是否记录脏数据,默认不记录脏数据。

    CDM中脏数据指的是数据格式非法的数据。当源数据中存在脏数据时,建议您打开此配置。否则可能导致迁移作业失败。

    说明:

    脏数据当前仅支持写入到OBS桶路径中。因此仅当已具备OBS连接时,此参数才可以配置。

    脏数据写入连接

    “是否写入脏数据”“是”才显示该参数。

    脏数据要写入的连接,目前只支持写入到OBS连接。

    obs_link

    OBS桶

    “脏数据写入连接”为OBS类型的连接时,才显示该参数。

    写入脏数据的OBS桶的名称。

    dirtydata

    脏数据目录

    “是否写入脏数据”选择为“是”时,该参数才显示。

    OBS上存储脏数据的目录,只有在配置了脏数据目录的情况下才会记录脏数据。

    用户可以进入脏数据目录,查看作业执行过程中处理失败的数据或者被清洗过滤掉的数据,针对该数据可以查看源数据中哪些数据不符合转换、清洗规则。

    /user/dirtydir

    单个分片的最大错误记录数

    “是否写入脏数据”“是”才显示该参数。

    单个map的错误记录超过设置的最大错误记录数则任务自动结束,已经导入的数据不支持回退。推荐使用临时表作为导入的目标表,待导入成功后再改名或合并到最终数据表。

    0

    开启限速

    设置限速可以保护源端读取压力,速率代表CDM传输速率,而非网卡流量。

    说明:
    • 支持对非二进制文件迁移的作业进行单并发限速。
    • 如果作业配置多并发则实际限制速率需要乘以并发数。
    • 文件到文件的二进制传输不支持限速功能。

    单并发速率上限(MB/s)

    CDM限速并查看作业读写速率。

    支持对到HIVE\DLI\JDBC\OBS\HDFS的作业进行单并发限速,如果配置多并发则实际速率限制需要乘以并发数。

    说明:

    限制速率为大于1的整数。

    20

    中间队列缓存大小(MB)

    数据写入时中间队列缓存大小,取值范围为1-500,默认值为64。

    如果单行数据超过该值,可能会导致迁移失败。如果该值设置过大时,可能会影响集群正常运行。请酌情设置,无特殊场景请使用默认值。例如:64

    64

  9. 单击“保存”,或者“保存并运行”回到作业管理界面,可查看作业状态。

    作业状态有New,Pending,Booting,Running,Failed,Succeeded,stopped。

    其中“Pending”表示正在等待系统调度该作业,“Booting”表示正在分析待迁移的数据。