通过数据迁移服务MMS(MaxCompute Migration Service)迁移数据前,需新增并启动Databricks数据源,确保数据源与MMS服务网络连通,并将Databricks的元数据同步至MMS服务,以便配置后续的迁移作业。
迁移费用
MMS数据迁移会消耗各类资源从而产生消费,主要组成费用如下:
收费方 | 计费项 | 对应MMS操作 |
Azure | Azure Blob Storage数据流出的流量费用。 | MaxCompute从Azure Blob Storage读取Databircks数据。 |
Databricks | Databricks的计算费用以及相应的Azure虚拟机费用。 |
|
阿里云 MaxCompute | MaxCompute Spark计算费用。 | 通过MaxCompute Spark拉取Databricks数据的计算费用。 |
阿里云 MaxCompute | MaxCompute SQL计算费用。 | 运行校验SQL的计算费用。 |
阿里云 网络 | 通过公网访问Databricks、Azure时,用来打通阿里云VPC访问外网的SNAT费用。 | 通过阿里云VPC访问Databricks,Azure。 |
专线提供方 | 通过专线访问Databricks、Azure时,产生的专线费用。 | 打通阿里云VPC与Azure VPC。 |
操作步骤
外部数据源准备
准备Databricks的个人访问令牌。
创建个人访问令牌, 详情请参考Databricks personal access token authentication。
权限配置,执行数据迁移的个人访问令牌对要迁移的目录至少具备如下权限:
浏览:BROWSE
执行:EXECUTE
查询:SELECT
使用目录:USE CATALOG
使用Schema:USE SCHEMA
Databricks有可用的“Compute”。
如果选择从Azure Blob Storage读取Databricks数据,需要准备Azure Strorage 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 Contribute角色。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控制台,在左上角选择目标地域。
在左侧导航栏,选择。
在数据源页签,单击新增数据源,配置数据源参数,然后单击新增。
数据源基本信息
参数名
是否必填
说明
数据源名称
是
数据源名称,可自定义,不能包含字符、数字、汉字之外的特殊字符。
数据源类型
是
选择Databricks。
网络连接
是
选择需要使用的网络连接(networklink)。用于 MMS 与 VPC 通信,最终连接数据源。具体要求请看前提条件的网络连接说明。
Databricks Workspace URL
是
Databricks的url地址,可以从Azure portal的Databricks菜单进入相应的Databricks实例查看。

Databricks Unity Catalog名称
是
要迁移的Databricks Unity Catalog,一个MMS数据源只能迁移一个Databricks Unity Datalog。
Databricks集群ID
是
Databricks集群("Compute")的ID,拉取元数据过程中需要使用该机器执行SQL。
Databricks访问令牌
是
Databricks的个人访问令牌,可以参考Databricks personal access token authentication创建。
使用Databricks JDBC读UnitCatalog里的表
否
是否通过Databricks JDBC读Databircks表。
Azure Authentication
是
SAS:通过Azure Storage Account的SAS访问Storage Account。
Azure Storage Account SAS令牌: 创建可以参考Azure官网。
Service Principal:通过Azure的Service Prinipal访问Storage Account。
Azure应用ID
Azure App Client Secret
Azure租户ID
默认目标MaxCompute项目
是
数据迁移时选择映射的目标项目。
目标MaxCompute项目列表
否
若一个数据源的数据需要迁移到多个目标项目,需配置目标MaxCompute项目列表。
MaxCompute执行迁移作业的项目
是
迁移过程中,执行MaxCompute上发起的各类Spark、SQL等迁移作业的项目,并使用该项目关联的默认计算Quota。
其他信息
均为选填参数。
参数名
说明
Jdbc page size
默认为100000。
Metastore定时更新
是否开启元数据定时更新。开启后MMS会定时从Databricks拉取元数据。
Metastore访问并发量
MMS访问Databricks API时的最大并发量。
Schema白名单
若指定,MMS只会拉取白名单内指定的Databricks UnityCatalog里的schema。
Schema黑名单
若指定,MMS不会拉取黑名单内指定的Databricks UnityCatalog里的schema。
表黑名单
若指定,MMS只会拉取白名单内指定的Databricks UnityCatalog里的table,注意格式是
<schema>.<table>。表白名单
若指定,MMS不会拉取黑名单内指定的Databricks UnityCatalog里的table,注意格式是
<schema>.<table>。数据搬迁任务最大并发量
MMS最大迁移任务的并发量。过大的并发量可能造成Databricks的计算负载压力过大。默认20。
MaxCompute迁移任务sql参数
特殊场景下给MaxCompute SQL指定运行时部分参数。
表名字符转换配置
格式为JSON, 如{"%": "_"} 用于将源table里的特殊字符映射为MaxCompute支持的字符。
单个任务处理的最多分区数量
默认50。一般不需要修改。
单个任务处理的最大数量(单位G)
默认5G。一般不需要修改。
分区特殊字符映射
格式为JSON, 如{"/": "_"} 用于将源分区值中的特殊字符映射为MaxCompute支持的字符。