通过数据迁移服务MMS(MaxCompute Migration Service)迁移数据前,需新增并启动Databricks数据源,确保数据源与MMS服务网络连通,并将Databricks的元数据同步至MMS服务,以便配置后续的迁移作业。
迁移费用
MMS数据迁移会消耗各类资源从而产生消费,主要组成费用如下:
MMS操作 | 计费项 | 收费方 |
| 计算费用:MaxCompute端产生Spark作业消耗计算资源。 | 阿里云 MaxCompute |
MaxCompute从Azure Blob Storage读取Databricks数据。 | 流量费用:Azure Blob Storage数据流出时产生。 | Azure |
Databricks JDBC读数据 | 计算费用:通过Databricks JDBC读数据时产生。 虚拟机费用:Azure虚拟机读数据时产生。 | Databricks |
若迁移任务配置了“开启校验” | 计算费用:在Databricks和MaxCompute分别执行校验SQL语句产生。 | 阿里云 MaxCompute和Databricks |
网络配置 | 网络费用:
| 专线提供方或阿里云网络 |
操作步骤
目标端MaxCompute项目已完成准备工作。
步骤一:外部数据源准备
准备Databricks的个人访问令牌。
创建个人访问令牌,详情请参考Databricks personal access token authentication。
权限配置,执行数据迁移的个人访问令牌对要迁移的目录至少具备如下权限:
浏览:BROWSE
执行:EXECUTE
查询:SELECT
使用目录:USE CATALOG
使用Schema:USE SCHEMA
Databricks有可用的“Compute”。
如果选择从Azure Blob Storage读取Databricks数据,需要准备Azure Storage Account的SAS或Azure Service Principal。下面两种认证方式任选其一:
Azure Storage Account的SAS,需要有相应容器的权限:读(Read)、查(List)、写(Write)、增(Add)。
Azure Service Principal,需要相应Storage Account的Storage Blob Data Contributor权限角色。
Service Principal的创建和角色分配,详情请参考Azure官网。
下面命令行展示了使用Azure的
az命令在本地创建Service Principal并赋予其Storage Blob Data Contributor角色。az ad sp create-for-rbac \ --name "blob_owner" \ --role "Storage Blob Data Contributor" \ --scopes /subscriptions/08****58-****-****-****-1f6d****48ff/resourcegroups/<resourcegroupName>/providers/Microsoft.Storage/storageAccounts/<storageAccountName>示例返回结果如下图:

注意:如果Storage Account是在创建Databricks实例过程中由Databricks创建的,这种Storage Account只能被Databricks访问。如果想要让MMS可以通过读取Azure Blob Storage来迁移数据,需要向Azure申请去掉Storage Account的deny assignment。
步骤二:新增数据源
登录MaxCompute控制台,在左上角选择地域。
在左侧导航栏,选择。
在数据源页签,单击新增数据源。
在弹出的MaxCompute服务关联角色对话框中,单击确认,即可创建成功。若未自动弹出该对话框,则表明该角色已创建。
在新增数据源页面,配置数据源信息,然后单击新增,完成数据源创建。
数据源基本信息
参数名
是否必填
说明
数据源名称
是
数据源名称,可自定义,不能包含字符、数字、汉字之外的特殊字符。
数据源类型
是
选择Databricks。
网络连接
是
选择需要使用的网络连接。
网络连接在MaxCompute 模块创建,用于MMS与VPC通信,最终连接数据源。
Databricks Workspace URL
是
Databricks的URL地址,可以从Azure portal的Databricks菜单进入相应的Databricks实例查看。

Databricks Unity Catalog名称
是
待迁移的Databricks Unity Catalog,一个MMS数据源只能迁移一个Databricks Unity Catalog。
Databricks集群ID
是
Databricks集群的ID,拉取元数据过程中需要使用该集群执行SQL。
Databricks访问令牌
是
Databricks的个人访问令牌,可以参考Databricks personal access token authentication创建。
使用Databricks JDBC读UnitCatalog里的表
否
是否通过Databricks JDBC读Databricks表。
Azure Authentication
是
SAS:通过Azure Storage Account的SAS访问Storage Account。
Azure Storage Account SAS令牌: 参考Azure官网创建。
Service Principal:通过Azure的Service Principal访问Storage Account。
Azure应用ID
Azure App Client Secret
Azure租户ID
默认目标MaxCompute项目
是
数据迁移时选择映射的目标项目,不可修改。
目标MaxCompute项目列表
否
若一个数据源的数据需要迁移到多个目标项目,需配置目标MaxCompute项目列表。
MaxCompute执行迁移作业的项目
是
迁移过程中,执行在MaxCompute上发起的Spark、SQL等迁移作业的项目,并使用该项目关联的默认计算Quota。
其他信息
以下参数均非必填,根据需要填写。
参数名
说明
Jdbc page size
默认为100000。
Metastore定时更新
数据源元数据是否定时拉取。取值说明如下:
启用:定时拉取,更新周期支持每天和每小时,支持配置更新开始时间。
每日更新:定时器每天运行一次,运行时刻为选定的24小时内的某一时间(精确到分钟)。
每小时更新:定时器每小时运行一次,运行时刻为选定的60分钟内的某一分钟。
禁用:不定时拉取。
Metastore访问并发量
访问MetaStore的并发量。
Schema白名单
需要迁移的Schema,多个值之间以半角逗号(,)分隔。
Schema黑名单
不需要迁移的Schema,多个值之间以半角逗号(,)分隔。
表黑名单
不需要迁移的Databricks数据表。
单个表的格式为
schema.table或table,多个表之间以半角逗号(,)分隔。表白名单
需要迁移的Databricks数据表。
单个表的格式为
schema.table或table,多个表之间以半角逗号(,)分隔。数据搬迁任务最大并发量
MMS最大迁移任务的并发量。过大的并发量可能造成Databricks的计算负载压力过大。默认20。
MaxCompute迁移任务sql参数
SQL参数。参考Flag参数列表。
表名字符转换配置
格式为JSON,如{"%": "_"}用于将源table里的特殊字符映射为MaxCompute支持的字符。
单个任务处理的最多分区数量
默认50。即一次MMA任务迁移的分区数量,通过批量的分区迁移,可以减少提交SQL的次数,节约SQL提交时间。一般不需要修改。
单个任务处理的最大数量(单位G)
默认5G。一般不需要修改。
分区特殊字符映射
格式为JSON,如{"/": "_"}用于将源分区值中的特殊字符映射为MaxCompute支持的字符。
步骤三:同步元数据
数据源启动后会生成一个作业实例,实现数据源与MMS服务的连接,再将源数据同步至MMS服务,以便配置后续迁移作业。
该作业实例会占用4 CU计算资源。当数据源无任何等待运行或正在运行的迁移作业或元数据同步作业时,系统会关闭数据源,使用时需再次启动。
在数据源页签,单击目标数据源对应的操作列的更新元数据。
在数据源页签,可以查看目标数据源的运行状态。
若数据源的元数据存在变动,且启用了元数据定时更新,系统会按照配置的时间定时更新,无需手动进行元数据同步操作。
外部数据源配置完成后,创建迁移作业。