Azure Databricks DDL迁移

更新时间:

本文介绍如何将Azure Databricks中的schema以及schema内的所有表(仅表结构)迁移至AnalyticDB for MySQL

方案介绍

Azure Databricks的元数据结构为catalog.schema.table三层,AnalyticDB for MySQL的元数据结构为 database.table 两层。元数据结构如下图所示:

image

通过本教程中的脚本文件,可以自动化将Azure Databricks中的schemaschema内的所有表迁移至AnalyticDB for MySQL的数据库(Database)。在迁移过程中,将自动解析Azure DatabricksDelta表的结构信息,并生成相对一致的符合开源Delta Lake标准的Spark SQL DDL语句文件。随后,AnalyticDB for MySQL将通过Spark Interactive型资源组,根据生成的DDL语句文件创建同名的数据库和表。若Azure Databricks中有多个schema需要迁移,则需要通过多次执行迁移脚本,将schemaschema内的所有table迁移至AnalyticDB for MySQL的多个数据库中。

前提条件

操作步骤

  1. 执行如下命令,下载Python依赖。

    pip install pyhive
    pip install thrift
    pip install thrift_sasl
  2. 下载GetDDLFromDatabricksV01.py示例文件,并替换相关配置参数:

    参数

    说明

    示例值

    databricks_workspace_url

    Azure Databricks工作区 URL,格式为https://adb-28944****.9.azuredatabricks.net/?o=28944****。获取方法,请参见Workspace URL

    https://adb-28944****.9.azuredatabricks.net/?o=28944****

    databricks_token

    Azure Databricks的访问令牌,且需确保已具有CatalogSchema的读取权限获取方法,请参见Manage personal access token permissions

    dapi****

    databricks_catalog

    Azure DatabricksCatalog名称。

    databricks****

    databricks_schema

    Azure DatabricksSchema名称。

    adbmysql

    databricks_warehouse_id

    Azure DatabricksWarehouse ID。

    42****

    ddl_output_root_path

    Python环境中临时文件的存储路径。脚本转换DDL后,会把后缀名为.SQL的临时文件存储在该路径中,后续AnalyticDB for MySQL Spark会顺序执行该文件。

    /root/databricks/

    adb_spark_host

    AnalyticDB for MySQL集群Spark Interactive型资源组的公网连接地址。

    amv-uf648****sparkwho.ads.aliyuncs.com

    adb_username

    AnalyticDB for MySQL集群的数据库账号名称。

    user

    adb_password

    AnalyticDB for MySQL集群的数据库账号的密码。

    password****

    adb_spark_resource_group

    AnalyticDB for MySQL集群Spark Interactive型资源组名称。

    Interactive

    adb_database_oss_location

    AnalyticDB for MySQLDelta Lake表数据的OSS存储路径。该路径下请勿存储数据,否则会导致建表失败。

    您可以在数据库级别或表级别配置Location参数,在数据库级别配置Location参数后,该数据库中所有表的数据均会存储在该Location。本教程中,仅在数据库级别配置Location参数。

    oss://testBucketName/adbmysql/

  3. 执行如下命令,运行脚本文件。

    python GetDDLFromDatabricksV01.py
  4. 脚本执行完成后,在AnalyticDB for MySQL集群中检查是否迁移成功。

    1. 登录云原生数据仓库AnalyticDB MySQL控制台,在左上角选择集群所在地域。在左侧导航栏,单击集群列表,然后单击目标集群ID。

    2. 在左侧导航栏,单击数据管理 > 数据目录

    3. 单击目标数据库和表,查看表的详细信息,例如:表类型、表存储数据量、列名等。

      image

    4. 在左侧导航栏,单击作业开发 > SQL开发

    5. 选择Spark引擎和Interactive型资源组,执行如下命令查看表结构是否符合预期。

      DESCRIBE DETAIL adbmysql.table_name;