概要
2021年7月23時点にて、Databricksにて外部Hive Metastore(version:2.3.7)を構築する際にデータベースの初期化をDatabricks(Spark)から実施できなかったため、Hiveのコードに含まれるDDLを事前に実行する方法を共有します。下記のいずれのDBでも初期化がされず、同様にHiveのDDLを事前に実行することで適切に動しました。
- Azure SQL Database
- Azure Database for MySQL
Databricksのドキュメントにて下記のように記載がある通り、外部Hive Metastoreを構築する際のデータベースの初期化(≒テーブル作成)を実施してくれるとの記載があったので実行したのですが、私の環境では動作しませんでした。
datanucleus.autoCreateSchema true
datanucleus.fixedDatastore false
引用元:外部Apache Hiveメタストア - Azure Databricks - Workspace | Microsoft Docs
私の環境では、下記のようなエラーメッセージが表示されておりました。
検証環境
Databricks Runtime 7.3とDatabricks Runtime 8.3のいずれでも同様の動作でした。
検証環境1
databricks runtime: 7.3.x-cpu-ml-scala2.12
Python version: 3.7.10
pyspark version: 3.0.0.dev0
検証環境2
databricks runtime: 8.3.x-scala2.12
Python version: 3.8.8
pyspark version: 3.1.2.dev0
手順
1. GithubにおけるHiveのレポジトリから想定のデータベースとHiveのバージョン(今回は2.3.0)のDDL文をダウンロードします。
- Azure SQL Databaseの場合
- Azure Database for MySQLの場合
引用元:hive/hive-schema-2.3.0.mssql.sql at master · apache/hive (github.com)
2. ダウンロードしたファイルを実行します。
MySQLにてすべてのクエリを実行する場合にはSOURCE hive-txn-schema-2.3.0.mysql.sql;
のところでエラーとなるため、その後のINSERT INTO VERSION...
のところも実行してください。