配置Databricks数据源

更新时间:
复制 MD 格式

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

迁移费用

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

MMS操作

计费项

收费方

  • 数据源运行过程(包括元数据同步)

  • 任务迁移数据过程

计算费用:MaxCompute端产生Spark作业消耗计算资源

阿里云

MaxCompute

MaxComputeAzure Blob Storage读取Databricks数据。

流量费用 :Azure Blob Storage数据流出时产生。

Azure

Databricks JDBC 读数据

计算费用:通过Databricks JDBC读数据时产生。

虚拟机费用:Azure虚拟机读数据时产生。

Databricks

若迁移任务配置了“开启校验”

计算费用:在DatabricksMaxCompute分别执行校验SQL语句产生。

阿里云

MaxComputeDatabricks

网络配置

网络费用

  • 若有网络专线则收取专线相关费用;

  • 若无网络专线即通过公网访问Databricks、Azure时,用来打通阿里云VPC访问外网的SNAT费用。

专线提供方或阿里云网络

建议选择包年包月的计算资源和数据传输独享资源来执行迁移作业,以便降低迁移成本。

操作步骤

目标端MaxCompute项目已完成准备工作

步骤一:外部数据源准备

  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 Storage 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 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>

        示例返回结果如下:

        Apple@B-2AXHMD6M-0228 ~(spark-3.5.4) % az ad sp create-for-rbac \
            --name "blob_contributor" \
            --role "Storage Blob Data Contributor" \
            --scopes /subscriptions/xxx/resourcegroups/xxx/providers/Microsoft.Storage/storageAccounts/xxx
        Creating 'Storage Blob Data Contributor' role assignment under scope '/subscriptions/xxx/resourcegroups/xxx/providers/Microsoft.Storage/storageAccounts/xxx'
        The output includes credentials that you must protect. Be sure that you do not include these credentials in your code or check the credentials into your source control. For more information, see https://aka.ms/azadsp-cli
        {
          "appId": "7f2c4503-2f3d-4ff6-a292-cda430be99ed",
          "displayName": "blob contributor",
          "password": "xxx",
          "tenant": "xxx2-14a2-4b7c-9430-3xxx61"
        }

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

步骤二:新增数据源

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

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

  3. 数据源页签,单击新增数据源

    在弹出的MaxCompute服务关联角色对话框中,单击确认,即可创建成功。若未自动弹出该对话框,则表明该角色已创建。

    新增数据源页面,配置数据源信息,然后单击新增,完成数据源创建。

    • 数据源基本信息

      参数名

      是否必填

      说明

      数据源名称

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

      数据源类型

      选择Databricks

      网络连接

      选择需要使用的网络连接。

      网络连接在MaxCompute管理配置 > 网络连接 模块创建,用于MMSVPC通信,最终连接数据源。

      Databricks Workspace URL

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

      在实例的 Overview 页面 Essentials 区域右侧,可查看 URL 字段,其格式为 https://adb-{workspace-id}.azuredatabricks.net

      Databricks Unity Catalog名称

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

      Databricks集群ID

      Databricks集群的ID,拉取元数据过程中需要使用该集群执行SQL。

      Databricks访问令牌

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

      使用Databricks JDBCUnitCatalog里的表

      是否通过Databricks JDBCDatabricks表。

      Azure Authentication

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

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

      • Service Principal:通过AzureService 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.tabletable,多个表之间以半角逗号(,)分隔。

      表白名单

      需要迁移的Databricks数据表。

      单个表的格式为schema.tabletable,多个表之间以半角逗号(,)分隔。

      数据搬迁任务最大并发量

      MMS最大迁移任务的并发量。过大的并发量可能造成Databricks的计算负载压力过大。默认20。

      MaxCompute迁移任务sql参数

      SQL参数。参考Flag参数列表

      表名字符转换配置

      格式为JSON,如{"%": "_"}用于将源table里的特殊字符映射为MaxCompute支持的字符。

      单个任务处理的最多分区数量

      默认50。即一次MMA任务迁移的分区数量,通过批量的分区迁移,可以减少提交SQL的次数,节约SQL提交时间。一般不需要修改。

      单个任务处理的最大数量(单位G)

      默认5G。一般不需要修改。

      分区特殊字符映射

      格式为JSON,如{"/": "_"}用于将源分区值中的特殊字符映射为MaxCompute支持的字符。

步骤三:同步元数据

数据源启动后会生成一个作业实例,实现数据源与MMS服务的连接,再将源数据同步至MMS服务,以便配置后续迁移作业。

说明

该作业实例会占用4 CU计算资源。当数据源无任何等待运行或正在运行的迁移作业或元数据同步作业时,系统会关闭数据源,使用时需再次启动。

  1. 数据源页签,单击目标数据源对应的操作列的更新元数据

  2. 数据源页签,可以查看目标数据源的运行状态

  3. 若数据源的元数据存在变动,且启用了元数据定时更新,系统会按照配置的时间定时更新,无需手动进行元数据同步操作。

外部数据源配置完成后,创建迁移作业