目次
1. はじめに
目的
今回の記事では、Unity Catalog でスキーマ (データベース)を作成および管理する方法について説明していきます。 スキーマには、テーブル、ビュー、関数が含まれています。 カタログ内にスキーマを作成できます。
スキーマの定義を紹介します。
スキーマ (データベースとも呼ばれる) は、Unity Catalog の 3 レベルの名前空間の 2 番目のレイヤーです。 スキーマで、テーブルとビューを整理します。 ユーザーは、スキーマの親カタログに対する USE CATALOG アクセス許可に加えて、USE SCHEMA アクセス許可が割り当てられているすべてのスキーマを確認できます。 ユーザーがスキーマ内のテーブルまたはビューにアクセスまたは一覧表示するには、テーブルまたはビューに対する SELECT アクセス許可も必要です。
2. 必要条件
・スキーマの親カタログに対する USE CATALOG と CREATE SCHEMA のデータのアクセス許可が必要です。 メタストア管理者またはカタログの所有者が、これらの権限を付与できます。 メタストア管理者の場合は、これらの権限を自分に付与できます。
・すべてのユーザーは、既定で main カタログに対する USE CATALOG アクセス許可を持ちます。
・Azure Databricks アカウントは Premium プランにある必要があります。
・カタログの作成を実行するワークスペースにリンクされている Unity Catalog のメタストアが必要です。
・ノートブックや Databricks SQL を実行してカタログを作成するために使用するコンピューティング リソースで、Unity Catalog に準拠したアクセス モードが使用されている必要があります。
3. スキーマを作成する
スキーマを作成するには、カタログ エクスプローラーや SQLやPythonやRやScalaを使用できます。
また、Databricks Terraform プロバイダーと databricks_catalog を使用してカタログを作成することもできます。 カタログに関する情報は、databricks_catalogs を使用して取得できます。
3.1 カタログ エクスプローラーでスキーマを作成する
メタストアにリンクされているワークスペースにログインします。
①「カタログ」をクリックします。
②「カタログを作成」ボタンをクリックします。
③ 左側の「カタログ」ペインで、スキーマを作成するカタログをクリックします。
④ 詳細ペインで、「スキーマを作成」をクリックします。
スキーマに名前を付け、ユーザーがスキーマの目的を理解するのに役立つコメントを追加します。
(省略可能) スキーマ内のマネージド テーブルのデータが保存される場所を指定します。
メタストア用に構成された既定のルート保存場所またはカタログに指定されたマネージド ストレージの場所 (存在する場合) に、このスキーマ内のマネージド テーブルが保存されないようにする場合にのみ、ここで場所を指定してください。 「Unity Catalog メタストアを作成する」を参照してください。
指定するパスは、外部の場所の構成で定義する必要があり、その外部の場所の構成に対する CREATE MANAGED STORAGE 特権が必要です。 そのパスのサブパスを使用することもできます。 「外部の場所とストレージの資格情報を管理する」を参照してください。
⑤「作成」をクリックしてください。
カタログのアクセス許可を割り当てます。 「Unity Catalog の権限とセキュリティ保護可能なオブジェクト」を参照してください。
3.2 SQLでスキーマを作成する
ノートブックまたは Databricks SQL エディターで次の SQL コマンドを実行します。 角かっこ内の項目は省略可能です。 SCHEMA または DATABASE を使用できます。 プレースホルダー値を次のように置き換えます。
<catalog-name>: スキーマの親カタログの名前。
<schema-name>: スキーマの名前。
<location-path>: 省略可能。 Databricks SQL または Databricks Runtime 11.3 以降を実行しているクラスターを使用している場合にのみ利用可能。 カタログまたはメタストアのルート保存場所とは別の場所に、このスキーマ内のマネージド テーブルが保存されるようにする場合は、保存場所のパスを指定します。 このパスは外部の場所の構成で定義する必要があり、ユーザーにはその外部の場所の構成に対する CREATE MANAGED STORAGE 特権が必要です。 外部の場所の構成またはサブパス (つまり、’abfss://us-east-1/finance’ または ‘abfss://us-east-1/finance/product’) で定義されているパスを使用できます。
<comment>: 省略可能な説明またはその他のコメントです。
<property-key> = <property-value> [ , … ]:省略可能。 スキーマに設定する Spark SQL プロパティと値です。
パラメーターの説明については、CREATE SCHEMA を参照してください。
※ 文法
USE CATALOG <catalog>;
CREATE { DATABASE | SCHEMA } [ IF NOT EXISTS ] <schema-name>
[ MANAGED LOCATION ‘<location-path>’ ]
[ COMMENT <comment> ]
[ WITH DBPROPERTIES ( <property-key = property_value [ , … ]> ) ];
※ 例
1 2 |
USE CATALOG example; CREATE SCHEMA IF NOT EXISTS schema_example; |
必要に応じて、USE CATALOG ステートメントを省略し、<schema-name> を <catalog-name>.<schema-name> に置き換えることができます。
カタログに特権を割り当てます。 「Unity Catalog の権限とセキュリティ保護可能なオブジェクト」を参照してください。
3.3 Pythonでスキーマを作成する
ノートブックで次の SQL コマンドを実行します。 角かっこ内の項目は省略可能です。 SCHEMA または DATABASE を使用できます。 プレースホルダー値を次のように置き換えます。
<catalog-name>: スキーマの親カタログの名前。
<schema-name>: スキーマの名前。
<location-path>: 省略可能。 Databricks SQL または Databricks Runtime 11.3 以降を実行しているクラスターを使用している場合にのみ利用可能。 カタログまたはメタストアのルート保存場所とは別の場所に、このスキーマ内のマネージド テーブルが保存されるようにする場合は、保存場所のパスを指定します。 このパスは外部の場所の構成で定義する必要があり、ユーザーにはその外部の場所の構成に対する CREATE MANAGED STORAGE 特権が必要です。 外部の場所の構成またはサブパス (つまり、’abfss://us-east-1/finance’ または ‘abfss://us-east-1/finance/product’) で定義されているパスを使用できます。
<comment>: 省略可能な説明またはその他のコメントです。
<property-key> = <property-value> [ , … ]:省略可能。 スキーマに設定する Spark SQL プロパティと値です。
パラメーターの説明については、CREATE SCHEMA を参照してください。
※ 文法
spark.sql(“USE CATALOG <catalog>”)
spark.sql(“CREATE { DATABASE | SCHEMA } [ IF NOT EXISTS ] <schema-name> ” \
“[ MANAGED LOCATION ‘<location-path>’ ] ” \
“[ COMMENT <comment> ] ” \
“[ WITH DBPROPERTIES ( <property-key = property_value [ , … ]> ) ]”)
※ 例
1 2 |
spark.sql("USE CATALOG example") spark.sql("CREATE SCHEMA IF NOT EXISTS schema_example1") |
必要に応じて、USE CATALOG ステートメントを省略し、<schema-name> を <catalog-name>.<schema-name> に置き換えることができます。
カタログに特権を割り当てます。 「Unity Catalog の権限とセキュリティ保護可能なオブジェクト」を参照してください。
3.4 Rでスキーマを作成する
ノートブックで次の SQL コマンドを実行します。 角かっこ内の項目は省略可能です。 SCHEMA または DATABASE を使用できます。 プレースホルダー値を次のように置き換えます。
<catalog-name>: スキーマの親カタログの名前。
<schema-name>: スキーマの名前。
<location-path>: 省略可能。 Databricks SQL または Databricks Runtime 11.3 以降を実行しているクラスターを使用している場合にのみ利用可能。 カタログまたはメタストアのルート保存場所とは別の場所に、このスキーマ内のマネージド テーブルが保存されるようにする場合は、保存場所のパスを指定します。 このパスは外部の場所の構成で定義する必要があり、ユーザーにはその外部の場所の構成に対する CREATE MANAGED STORAGE 特権が必要です。 外部の場所の構成またはサブパス (つまり、’abfss://us-east-1/finance’ または ‘abfss://us-east-1/finance/product’) で定義されているパスを使用できます。
<comment>: 省略可能な説明またはその他のコメントです。
<property-key> = <property-value> [ , … ]:省略可能。 スキーマに設定する Spark SQL プロパティと値です。
パラメーターの説明については、CREATE SCHEMA を参照してください。
※ 文法
library(SparkR)
sql(“USE CATALOG <catalog>”)
sql(paste(“CREATE { DATABASE | SCHEMA } [ IF NOT EXISTS ] <schema-name> “,
“[ MANAGED LOCATION ‘<location-path>’ ] ” ,
“[ COMMENT <comment> ] “,
“[ WITH DBPROPERTIES ( <property-key> = <property-value> [ , … ] ) ]”,
sep = “”))
※ 例
1 2 3 |
library(SparkR) sql("USE CATALOG example") sql("CREATE SCHEMA IF NOT EXISTS schema_example2") |
必要に応じて、USE CATALOG ステートメントを省略し、<schema-name> を <catalog-name>.<schema-name> に置き換えることができます。
カタログに特権を割り当てます。 「Unity Catalog の権限とセキュリティ保護可能なオブジェクト」を参照してください。
3.5 Scalaでスキーマを作成する
ノートブックで次の SQL コマンドを実行します。 角かっこ内の項目は省略可能です。 SCHEMA または DATABASE を使用できます。 プレースホルダー値を次のように置き換えます。
<catalog-name>: スキーマの親カタログの名前。
<schema-name>: スキーマの名前。
<location-path>: 省略可能。 Databricks SQL または Databricks Runtime 11.3 以降を実行しているクラスターを使用している場合にのみ利用可能。 カタログまたはメタストアのルート保存場所とは別の場所に、このスキーマ内のマネージド テーブルが保存されるようにする場合は、保存場所のパスを指定します。 このパスは外部の場所の構成で定義する必要があり、ユーザーにはその外部の場所の構成に対する CREATE MANAGED STORAGE 特権が必要です。 外部の場所の構成またはサブパス (つまり、’abfss://us-east-1/finance’ または ‘abfss://us-east-1/finance/product’) で定義されているパスを使用できます。
<comment>: 省略可能な説明またはその他のコメントです。
<property-key> = <property-value> [ , … ]:省略可能。 スキーマに設定する Spark SQL プロパティと値です。
パラメーターの説明については、CREATE SCHEMA を参照してください。
※ 文法
spark.sql(“USE CATALOG <catalog>”)
spark.sql(“CREATE { DATABASE | SCHEMA } [ IF NOT EXISTS ] <schema-name> ” +
“[ MANAGED LOCATION ‘<location-path>’ ] ” +
“[ COMMENT <comment> ] ” +
“[ WITH DBPROPERTIES ( <property-key> = <property-value> [ , … ] ) ]”)
※ 例
1 2 |
sql("USE CATALOG example") sql("CREATE SCHEMA IF NOT EXISTS schema_example2") |
必要に応じて、USE CATALOG ステートメントを省略し、<schema-name> を <catalog-name>.<schema-name> に置き換えることができます。
カタログに特権を割り当てます。 「Unity Catalog の権限とセキュリティ保護可能なオブジェクト」を参照してください。
4. まとめ
スキーマの作成方法について説明しました。今回の記事が少しでもDatabricksを知るきっかけや、業務のご参考になれば幸いです。
今回の記事が少しでも皆さんの新しい知識や業務のご参考になれば幸いです。
日商エレクトロニクスでは、Azure Databricksの環境構築パッケージを用意しています。
Azure DatabricksやAzure活用、マイクロソフト製品の活用についてご相談事がありましたら
是非お問い合わせください!
Azure Databricks連載記事のまとめはこちら
この記事を読んだ方へのオススメコンテンツはこちら
この記事を書いた人
- tungth
この投稿者の最新の記事
- 2024年3月12日ブログ【Microsoft Fabric】概要と試用版の作成方法をご紹介
- 2023年12月4日ブログ【Azure Databricks】スキーマの作成方法
- 2023年12月4日ブログ【Azure Databricks】カタログの作成方法
- 2023年10月11日ブログAzure DatabricksでVIEWの作成手順