配置Databricks数据源

通过数据迁移服务MMS(MaxCompute Migration Service)迁移数据前,需新增并启动Databricks数据源,确保数据源与MMS服务网络连通,并将Databricks的元数据同步至MMS服务,以便配置后续的迁移作业。

迁移费用

MMS数据迁移会消耗各类资源从而产生消费,主要组成费用如下:

收费方

计费项

对应MMS操作

Azure

Azure Blob Storage数据流出的流量费用。

MaxComputeAzure Blob Storage读取Databircks数据。

Databricks

Databricks的计算费用以及相应的Azure虚拟机费用。

  1. 通过Databricks JDBC读数据的计算费用。

  2. 通过Databircks JDBC运行校验SQL的计算费用。

阿里云

MaxCompute

MaxCompute Spark计算费用。

通过MaxCompute Spark拉取Databricks数据的计算费用。

阿里云

MaxCompute

MaxCompute SQL计算费用。

运行校验SQL的计算费用。

阿里云

网络

通过公网访问Databricks、Azure时,用来打通阿里云VPC访问外网的SNAT费用。

通过阿里云VPC访问Databricks,Azure。

专线提供方

通过专线访问Databricks、Azure时,产生的专线费用。

打通阿里云VPCAzure VPC。

操作步骤

外部数据源准备

  1. 准备Databricks的个人访问令牌。

    1. 创建个人访问令牌, 详情请参考Databricks personal access token authentication

    2. 权限配置,执行数据迁移的个人访问令牌对要迁移的目录至少具备如下权限:

      1. 浏览:BROWSE

      2. 执行:EXECUTE

      3. 查询:SELECT

      4. 使用目录:USE CATALOG

      5. 使用Schema:USE SCHEMA

  2. Databricks有可用的“Compute”。

  3. 如果选择从Azure Blob Storage读取Databricks数据,需要准备Azure Strorage AccountSASAzure Service Principal。下面两种认证方式任选其一:

    1. Azure Storage AccountSAS,需要有相应容器的权限:读(Read)、查(List)、写(Write)、增(Add)。

    2. Azure Service Principal,需要相应Storage AccountStorage Blob Data Contributor权限角色。

      1. Service Principal的创建和角色分配,详情请参考Azure官网

      2. 下面命令行展示了使用Azureaz命令在本地创建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>

        示例返回结果如下图:

        image

    注意:如果Storage Account是在创建Databricks实例过程中由Databricks创建的,这种Storage Account只能被Databricks访问。如果想要让MMS可以通过读取Azure Blob Storage来迁移数据,需要向Azure申请去掉Storage Accountdeny assignment。

新增数据源

  1. 登录MaxCompute控制台,在左上角选择目标地域。

  2. 在左侧导航栏,选择数据传输 > 迁移服务

  3. 数据源页签,单击新增数据源,配置数据源参数,然后单击新增

    • 数据源基本信息

      参数名

      是否必填

      说明

      数据源名称

      数据源名称,可自定义,不能包含字符、数字、汉字之外的特殊字符。

      数据源类型

      选择Databricks

      网络连接

      选择需要使用的网络连接(networklink)。用于 MMS 与 VPC 通信,最终连接数据源。具体要求请看前提条件的网络连接说明。

      Databricks Workspace URL

      Databricksurl地址,可以从Azure portalDatabricks菜单进入相应的Databricks实例查看。

      image

      Databricks Unity Catalog名称

      要迁移的Databricks Unity Catalog,一个MMS数据源只能迁移一个Databricks Unity Datalog。

      Databricks集群ID

      Databricks集群("Compute")的ID,拉取元数据过程中需要使用该机器执行SQL。

      Databricks访问令牌

      Databricks的个人访问令牌,可以参考Databricks personal access token authentication创建。

      使用Databricks JDBCUnitCatalog里的表

      是否通过Databricks JDBCDatabircks表。

      Azure Authentication

      • SAS:通过Azure Storage AccountSAS访问Storage Account。

        • Azure Storage Account SAS令牌: 创建可以参考Azure官网

      • Service Principal:通过AzureService 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支持的字符。