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。
在左侧导航栏,单击。
单击目标数据库和表,查看表的详细信息,例如:表类型、表存储数据量、列名等。
在左侧导航栏,单击。
选择Spark引擎和Interactive型资源组,执行如下命令查看表结构是否符合预期。
DESCRIBE DETAIL adbmysql.table_name;