Azure Databricks DDL迁移
本文介绍如何将Azure Databricks中的schema以及schema内的所有表(仅表结构)迁移至AnalyticDB for MySQL。
方案介绍
Azure Databricks的元数据结构为catalog.schema.table三层,AnalyticDB for MySQL的元数据结构为 database.table 两层。元数据结构如下图所示:
通过本教程中的脚本文件,可以自动化将Azure Databricks中的schema、schema内的所有表迁移至AnalyticDB for MySQL的数据库(Database)。在迁移过程中,将自动解析Azure Databricks中Delta表的结构信息,并生成相对一致的符合开源Delta Lake标准的Spark SQL DDL语句文件。随后,AnalyticDB for MySQL将通过Spark Interactive型资源组,根据生成的DDL语句文件创建同名的数据库和表。若Azure Databricks中有多个schema需要迁移,则需要通过多次执行迁移脚本,将schema、schema内的所有table迁移至AnalyticDB for MySQL的多个数据库中。
前提条件
AnalyticDB for MySQL集群的产品系列为企业版、基础版或湖仓版。
-
已在AnalyticDB for MySQL集群中创建Spark Interactive型资源组并获取其公网连接地址。
已创建AnalyticDB for MySQL集群的数据库账号。
如果是通过阿里云账号访问,只需创建高权限账号。
如果是通过RAM用户访问,需要创建高权限账号和普通账号并且将RAM用户绑定到普通账号上。
-
已安装Python环境,且Python版本为3.6及以上版本。
-
已将运行Python应用程序的服务器IP地址添加至AnalyticDB for MySQL集群的白名单中。
-
确保Databricks SQL Warehouse、Spark Interactive型资源组处于运行中。
操作步骤
-
执行如下命令,下载Python依赖。
pip install pyhive pip install thrift pip install thrift_sasl -
下载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的访问令牌,且需确保已具有Catalog或Schema的读取权限。获取方法,请参见Manage personal access token permissions。
dapi****
databricks_catalog
Azure Databricks的Catalog名称。
databricks****
databricks_schema
Azure Databricks的Schema名称。
adbmysql
databricks_warehouse_id
Azure Databricks的Warehouse 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 MySQL中Delta Lake表数据的OSS存储路径。该路径下请勿存储数据,否则会导致建表失败。
您可以在数据库级别或表级别配置Location参数,在数据库级别配置Location参数后,该数据库中所有表的数据均会存储在该Location。本教程中,仅在数据库级别配置Location参数。
oss://testBucketName/adbmysql/
-
执行如下命令,运行脚本文件。
python GetDDLFromDatabricksV01.py -
脚本执行完成后,在AnalyticDB for MySQL集群中检查是否迁移成功。
登录云原生数据仓库AnalyticDB MySQL控制台,在左上角选择集群所在地域。在左侧导航栏,单击集群列表,然后单击目标集群ID。
-
在左侧导航栏,单击。
-
单击目标数据库和表,查看表的详细信息,例如:表类型、表存储数据量、列名等。
表详情页包含基本信息和DDL语句两个页签,基本信息页签以表格形式展示各字段的数据类型、可空、主键、分布键、分区键及描述等属性。
-
在左侧导航栏,单击。
-
选择Spark引擎和Interactive型资源组,执行如下命令查看表结构是否符合预期。
DESCRIBE DETAIL adbmysql.table_name;