文档首页 > > 用户指南> 作业管理> 新建表/文件迁移作业

新建表/文件迁移作业

分享
更新时间:2020/10/23 GMT+08:00

操作场景

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

适用于数据上云、云服务间数据交换、云上数据迁移到本地业务系统。

前提条件

  • 新建连接
  • CDM集群与待迁移数据源可以正常通信。

操作步骤

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

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

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

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

    如果此处没有可选的连接,可单击“+”添加或者在“连接管理”界面中添加,具体操作请参见新建连接

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

    图2 新建作业

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

    表1 源端作业参数说明

    源端类型

    说明

    参数配置

    • OBS
    • 阿里云OSS
    • 七牛云KODO
    • 腾讯云COS

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

    暂不支持导入数据到阿里云OSS、七牛云KODO、腾讯云COS。

    参见配置对象存储源端参数

    • 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

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

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

    参见配置Hive源端参数

    • FTP
    • SFTP
    • NAS
    • SFS Turbo

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

    参见配置FTP/SFTP/NAS/SFS源端参数

    • HTTP
    • HTTPS

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

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

    参见配置HTTP/HTTPS源端参数

    • 数据仓库(DWS)
    • 云数据库 MySQL
    • 云数据库 SQL Server
    • 云数据库 PostgreSQL
    • 分布式数据库中间件(DDM)

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

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

    • FusionInsight LibrA
    • Derecho(GaussDB)

    支持从FusionInsight LibrA、Derecho导出数据。

    • MySQL
    • PostgreSQL
    • Oracle
    • IBM Db2
    • Microsoft SQL Server

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

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

    支持从MongoDB或DDS导出数据。

    参见配置MongoDB/DDS源端参数

    Redis

    支持从开源Redis导出数据。

    参见配置Redis源端参数

    数据接入服务(DIS)

    目前仅支持从DIS导出数据到云搜索服务、Apache Kafka、DMS Kafka。

    参见配置DIS源端参数

    • Apache Kafka
    • DMS Kafka

    目前仅支持从Kafka导出数据到云搜索服务、DMS Kafka、DIS。

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

    • 云搜索服务
    • Elasticsearch

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

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

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

    表2 目的端作业参数说明

    目的端类型

    说明

    参数配置

    OBS

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

    参见配置OBS目的端参数

    • MRS HDFS
    • FusionInsight HDFS
    • Apache HDFS

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

    参见配置HDFS目的端参数

    • MRS HBase
    • FusionInsight HBase
    • Apache HBase
    • CloudTable

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

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

    MRS Hive

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

    参见配置Hive目的端参数

    • FTP
    • SFTP
    • NAS
    • SFS Turbo

    FTP/SFTP/NAS作为目的端的场景,常用于将云端数据分析结果回迁到本地业务系统。

    参见配置FTP/SFTP/NAS/SFS目的端参数

    • 数据仓库(DWS)
    • 云数据库 MySQL
    • 云数据库 SQL Server
    • 云数据库 PostgreSQL
    • 分布式数据库中间件(DDM)

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

    使用JDBC接口导入数据,参见配置关系数据库目的端参数

    • 导入到DWS时,支持使用Copy接口或GDS组件提高导入性能,可在创建DWS连接时的“导入模式”参数中选择。
    • 导入到云数据库 MySQL服务时,支持使用MySQL的LOAD DATA功能加快数据导入,提高导入数据到MySQL数据库的性能。可在创建MySQL连接时的“使用本地API”参数中启用该功能。

    FusionInsight LibrA

    支持将数据导入到FusionInsight LibrA,不支持导入Derecho(GaussDB)。

    MySQL

    既可以支持用户本地数据中心自建的MySQL,也可以是用户在ECS上自建的MySQL,还可以是第三方云的MySQL服务。

    文档数据库服务(DDS)

    支持导入数据到DDS,不支持导入到本地MongoDB。

    参见配置DDS目的端参数

    分布式缓存服务(DCS)

    支持导入数据到DCS,支持“String”“Hashmap”两种值存储方式。不支持导入数据到本地Redis。

    参见配置DCS目的端参数

    • 云搜索服务
    • Elasticsearch

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

    参见配置Elasticsearch或云搜索服务目的端参数

    数据湖探索(DLI)

    支持导入数据到DLI服务。

    参见配置DLI目的端参数

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

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

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

    图3 字段映射
    • 如果字段映射关系不正确,用户可以通过拖拽字段来调整映射关系。
    • 如果在字段映射界面,CDM通过获取样值的方式无法获得所有列(例如从HBase/CloudTable/MongoDB导出数据时,CDM有较大概率无法获得所有列),则可以单击后选择“添加新字段”来手动增加,确保导入到目的端的数据完整。
    • 如果是导入到数据仓库服务(DWS),则还需在目的字段中选择分布列,建议按如下顺序选取分布列:
      1. 有主键可以使用主键作为分布列。
      2. 多个数据段联合做主键的场景,建议设置所有主键作为分布列。
      3. 在没有主键的场景下,如果没有选择分布列,DWS会默认第一列作为分布列,可能会有数据倾斜风险。

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

    图4 新建转换器

    CDM支持以下转换器:

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

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

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

    参数

    说明

    取值样例

    作业失败重试

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

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

    不重试

    作业分组

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

    DEFAULT

    是否定时执行

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

    抽取并发数

    设置同时执行的抽取任务数,一般保持默认即可。

    1

    加载(写入)并发数

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

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

    3

    是否写入脏数据

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

    脏数据写入连接

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

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

    obs_link

    OBS桶

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

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

    dirtydata

    脏数据目录

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

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

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

    /user/dirtydir

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

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

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

    0

    作业运行完是否删除

    选择作业执行后的操作:
    • 不删除:作业执行完不删除。
    • 成功后删除:仅作业执行成功时删除该作业,适合海量一次性作业。
    • 删除:作业执行完删除该作业,不管执行成功或失败都会删除。

    不删除

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

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

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

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!非常感谢您的反馈,我们会继续努力做到更好!
反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问