本文通过 HDFS 存储复制 + OSS 外表加载 的方式将 Hive 数据表通过 OSS 中转的方式迁移到 MaxCompute,包括将 Hive 表结构迁移到 MaxCompute、存量数据迁移到 MaxCompute。迁移任务可以开启增量,以定期发现新的 Hive 数据,并及时同步到 MaxCompute。
适用范围
当前仅杭州地域支持该功能。
前提条件
已创建实例,规格建议8核16G,操作系统建议 Alibaba Cloud Linux、CentOS 7.9,安装前请先开通私网连接服务。
已创建存储空间,并且用于迁移的账号具备写入 OSS 的权限。
已创建MaxCompute项目,并且用于迁移的账号具备以下权限:
已具备访问 OSS 的权限。具体操作,请参见 MaxCompute外部表权限配置和使用。
已具备在 MaxCompute 项目project/table/instance/job的所有权限,建议为迁移账号分配开发 (Role_Project_Dev) 角色。权限信息请参见 MaxCompute权限。
已创建工作空间,并使用Serverless资源组,完成绑定工作空间,同时打通源端 Hadoop 集群的网络。具体操作,请参见网络连通方案概述。
已准备好待迁移数据。在数据迁移前需停止数据源端表和分区的写入操作,避免迁移后数据校验失败。
使用限制
不支持
__HIVE_DEFAULT_PARTITION__分区迁移。在增量迁移阶段,不支持同步源端的删表、删分区、表结构变更等DDL操作。
计费说明
数据迁移会产生如下费用:
数据传输费用:将 HDFS 数据复制到 OSS 时,会产生 DataWorks 资源组的数据计算费用。为降低成本,建议您采用包年包月模式的资源组来执行迁移作业。详情请参见包年包月资源组计费。
中转存储费用:迁移任务使用 OSS 作为中转存储,会产生相应的 OSS 存储费用。建议您开启“单表/分区迁移完成后 OSS 文件自动删除”功能,来节省您的存储开销。
计算费用:计算费用主要源于以下两个场景
将 OSS 外表数据加载至 MaxCompute 时,会因执行 SQL 作业而产生 MaxCompute 计算费用。
若启用“迁移结果校验”功能,系统将在源端 Hive 和目标端 MaxCompute 分别执行校验 SQL,这会产生额外的计算费用。
为有效控制计算成本,建议您为迁移作业选购包年包月的 MaxCompute 计算资源。详情请参见计算费用(包年包月)。
网络费用:网络费用取决于您的连接方式。如果使用专线,将产生专线费用;如果通过公网传输,则通常按源端平台的数据流出流量进行计费。
操作步骤
步骤一:绑定资源组
在左侧导航栏,选择迁移准备 > 资源组与服务代理管理。
在资源组页签,单击绑定资源组,选择 DataWorks Serverless 资源组。
资源组绑定完成后,您可以在资源组页签,查看已绑定的资源组。
步骤二:安装服务代理
在使用数据迁移模块前,您需要预先安装服务代理,它会建立与数据源的连接,以执行元数据即席查询、元数据盘点等操作。
在左侧导航栏,选择迁移准备 > 资源组与服务代理管理。
在服务代理页签,单击申请License,会自动生成一个License,防止服务代理被滥用。
单击服务代理安装,输入服务代理名称,选择地域与ECS,即可自动化部署安装。
安装完成后,可通过服务代理列表查看服务代理在线状态。
步骤三:创建数据源
在左侧导航栏,选择迁移准备 > 数据源管理。
在湖仓存储及元数据管理页签,单击新建数据源。
配置 Hive 数据源,数据源类型选择
Hive,详情见 Hive数据源。配置 HDFS 数据源,数据源类型选择
HDFS,详情见 HDFS数据源。配置 OSS 数据源,数据源类型选择
OSS,详情见 OSS数据源。配置 MaxCompute 数据源,数据源类型选择
MaxCompute,详情见 MaxCompute数据源。
步骤四:添加迁移组
在左侧导航栏,选择湖仓数据迁移 > 数据迁移。
在Hive->MaxCompute页签,点击添加迁移组。
根据界面提示,配置迁移组。
参数名 | 是否必填 | 说明 |
迁移组名称 | 是 | 迁移组的名称。用于统一管理特定迁移场景下的所有相关任务。 |
源端数据源类型 | 是 | 指定数据来源的系统类型,当前仅支持 Hive。 |
目标端数据源类型 | 是 | 指定数据去向的系统类型,当前仅支持 MaxCompute。 |
源端数据源 | 是 | 从已注册的数据源列表中选择具体的源端 Hive 实例。 |
目标端数据源 | 是 | 从已注册的数据源列表中选择具体的目标端 MaxCompute 实例。 |
迁移方式 | 是 | 当前仅支持OSS中转后,外表转内表。 |
源端存储数据源 | 是 | 支持 HDFS、AWS S3、Azure Blob、Tencent COS。 |
目标端中转数据源 | 是 | 当前仅支持 OSS。 |
全局参数 | 否 | 仅支持配置以 |
步骤五:创建并执行迁移任务
在Hive->MaxCompute页签,点击新建迁移任务的按钮。
填写基本信息。
参数名 | 是否必填 | 说明 |
迁移任务名称 | 是 | 迁移任务的名称。 |
Hive数据库 | 是 | 指定作为数据来源的源端 Hive 数据库。 |
MaxCompute Project | 是 | 指定用于接收数据的目标端 MaxCompute 项目空间。 |
描述 | 否 | 填写关于该迁移任务的备注或补充说明信息。 |
进行迁移任务设置。
参数名 | 是否必填 | 说明 |
迁移类型 | 是 | 指定数据迁移的模式。“结构+存量文件迁移”仅迁移历史存量数据及表结构;“结构+存量+增量文件迁移”在存量基础上增加对后续增量数据的迁移支持。 |
迁移数据对象选择 | 是 | 指定用于筛选迁移对象的规则模式,支持“白名单模式”或“黑名单模式”。具体规则参阅 黑白名单配置。 |
OSS中转目录 | 否 | 存储中转数据的 OSS 目录,默认存放在bucket的根目录。 |
后续数据迁移执行时间 | 否 | 仅当迁移类型选择“结构+存量+增量文件迁移”时生效且必填。用于设定增量数据同步的起始时间点。 |
是否开启迁移结果校验(内置count校验) | 是 | 开启后,迁移任务完成后将自动执行源端与目标端的数据量(Count)一致性校验。 |
单表/分区迁移完成后中转OSS文件是否自动删除 | 是 | 选择是否在单个表或分区迁移成功后自动删除中转 OSS 中的临时文件,以节省中转存储成本。 |
自定义参数配置 | 否 | 仅支持配置以 |
在迁移任务列表页面,找到创建完成的迁移任务,点击操作列的执行迁移。
步骤六:查看迁移任务详情
创建完成后,您可在Hive->MaxCompute页签,查看迁移任务状态,若迁移任务运行失败后:
您可以单击迁移任务左侧的箭头
v,展开任务执行情况,再点击操作列的任务详情,查看每张表的执行情况。

在迁移明细页面,您可以按照表名、分区名、是否分区表、迁移状态和校验状态等进行筛选,单击目标任务操作列中查看,以确定具体失败原因。

您可以根据需求选择以下方式重跑任务:
重跑所有失败作业:返回迁移任务列表页面,再次点击操作列的执行迁移。
批量重跑指定表/分区:在迁移明细页面底部点击批量重跑,勾选目标表和分区后,点击确定按钮。
重跑单个表/分区:在迁移明细页面找到对应的表或分区,点击操作列的重跑。
说明:
数据迁移过程包含结构迁移、存储迁移、外表转内表三个阶段。执行重跑操作后,任务将从此前失败的阶段断点恢复运行。