Databricks Unity Catalog
クエリ対象のテーブル形式に応じて、Delta Lake カタログまたは Iceberg カタログを作成することで、Unity Catalog にアクセスできます。
v4.0 以降、データベースは以下をサポートしています:
- Databricks Unity Catalog の認証方式として、従来の Personal Access Token に加えて、Service Principal をサポート
- Databricks Unity Catalog の Vended Credential をサポート
Databricks Unity Catalog 用 Delta Lake カタログを作成する
構文
CREATE EXTERNAL CATALOG <catalog_name>
[COMMENT <comment>]
PROPERTIES
(
"type" = "deltalake",
MetastoreParams,
StorageCredentialParams,
MetadataUpdateParams
)
パラメータ
catalog_name
Delta Lake カタログの名前です。命名規則は以下のとおりです。
- 名前には英字、数字(0~9)、およびアンダースコア(_)を使用できます。先頭は英字である必要があります。
- 名前は大文字と小文字を区別し、最大長は 1023 文字です。
comment
Delta Lake カタログの説明です。このパラメータは任意です。
type
データソースの種類です。値を deltalake に設定します。
MetastoreParams
データソースのメタストアとシステムを統合するためのパラメータセットです。
-
認証方式として Personal Access Token を使用する場合は、
MetastoreParamsを以下のように設定します。"hive.metastore.type" = "unity","databricks.host"= "https://<host>.cloud.databricks.com","databricks.catalog.name" = "<catalog_name>","databricks.token" = "<token>"注記Databricks で Personal Access Token を作成する方法については、付録 - Databricks Personal Access Token を作成するを参照してください。
-
認証方式として Service Principal を使用する場合は、
MetastoreParamsを以下のように設定します。"hive.metastore.type" = "unity","databricks.host"= "https://<host>.cloud.databricks.com","databricks.catalog.name" = "<catalog_name>","databricks.client.id" = "<client_id>","databricks.client.secret" = "<client_secret>"
| パラメータ | 必須 | 説明 |
|---|---|---|
hive.metastore.type | はい | Delta Lake クラスタで使用するメタストアの種類です。値を unity に設定します。 |
databricks.host | はい | Databricks クラスタのホストです。例: https://abcd1234.cloud.databricks.com。この値は workspace URL を参照して取得できます。 |
databricks.catalog.name | はい | Unity Catalog の名前です。 |
databricks.token | いいえ | Unity Catalog メタストアへのアクセスに使用する Personal Access Token です。Personal Access Token 認証を使用する場合に設定します。 |
databricks.client.id | いいえ | Unity Catalog メタストアへのアクセスに使用する Service Principal の ID です。Service Principal 認証を使用する場合に設定します。 |
databricks.client.secret | いいえ | Unity Catalog メタストアへのアクセスに使用する Service Principal のシークレットです。Service Principal 認証を使用する場合に設定します。 |
StorageCredentialParams
Delta Lake カタログでは、オブジェクトストレージとして AWS S3、Microsoft Azure Blob Storage および Data Lake Storage Gen2、Google Cloud Storage をサポートしています。詳細については、「Delta Lake catalog - StorageCredentialParams」を参照してください。
v4.0 以降、Databricks Unity Catalog は Vended Credential をサポートしています。Vended Credential はデフォルトで有効です。AWS S3 に保存されたデータへアクセスする場合は、StorageCredentialParams に aws.s3.region を指定するだけで利用できます。Azure Blob Storage、Azure Data Lake Storage Gen2、および Google Cloud Storage の場合は、StorageCredentialParams を指定する必要はありません。
MetastoreParams を設定することで、データベースは Unity Catalog にアクセスし、データベース名、テーブル名、およびテーブルロケーションを取得できます。ただし、テーブルデータ自体を読み取ることはできません。これは、Delta Lake テーブルのデータファイルおよびメタデータファイル(delta_log)の両方がストレージシステム内に保存されているためです。そのため、データベースが Delta Lake テーブルのロケーション内のファイルを読み取れるようにするには、対応するストレージシステムの認証パラメータを設定する必要があります。
例
以下の例では、Databricks Unity Catalog 内のデータをクエリするために、さまざまなシナリオで Delta Lake カタログを作成する方法を示します。
AWS S3
-
AWS の IAM ユーザーベース認証情報 を使用する場合は、以下のコマンドを実行します。
CREATE EXTERNAL CATALOG databricks_unity_catalogPROPERTIES ("type"="deltalake","hive.metastore.type" = "unity","databricks.host"= "https://xxxxxx.cloud.databricks.com","databricks.token" = "<personal_access_token>","databricks.catalog.name" = "<unity_catalog_name>","aws.s3.access_key" = "<iam_user_access_key>","aws.s3.secret_key" = "<iam_user_access_key>","aws.s3.region" = "<aws_s3_region>"); -
AWS の インスタンスプロファイルベース認証情報 を使用する場合は、以下のコマンドを実行します。
CREATE EXTERNAL CATALOG databricks_unity_catalogPROPERTIES ("type"="deltalake","hive.metastore.type" = "unity","databricks.host"= "https://xxxxxx.cloud.databricks.com","databricks.token" = "<personal_access_token>","databricks.catalog.name" = "<unity_catalog_name>","aws.s3.use_instance_profile" = "true","aws.s3.region" = "<aws_s3_region>"); -
AWS の Assume Role ベース認証情報 を使用する場合は、以下のコマンドを実行します。
CREATE EXTERNAL CATALOG databricks_unity_catalogPROPERTIES ("type"="deltalake","hive.metastore.type" = "unity","databricks.host"= "https://xxxxxx.cloud.databricks.com","databricks.token" = "<personal_access_token>","databricks.catalog.name" = "<unity_catalog_name>","aws.s3.use_instance_profile" = "true","aws.s3.iam_role_arn" = "<iam_role_arn>","aws.s3.region" = "<aws_s3_region>"); -
AWS で Vended Credential を使用し、Databricks Unity Catalog で Service Principal を使用する場合は、以下のコマンドを実行します。
CREATE EXTERNAL CATALOG databricks_unity_catalogPROPERTIES("type"="deltalake","hive.metastore.type" = "unity","databricks.host"= "https://xxxxxx.cloud.databricks.com","databricks.client.id" = "<service_principal_client_id>","databricks.client.secret" = "<service_principal_client_secret>","databricks.catalog.name" = "<unity_catalog_name>","aws.s3.region" = "<aws_s3_region>");
Azure Blob Storage
-
Shared Key 認証方式を使用する場合は、以下のコマンドを実行します。
CREATE EXTERNAL CATALOG databricks_unity_catalogPROPERTIES("type"="deltalake","hive.metastore.type" = "unity","databricks.host"= "https://xxxxxx.cloud.databricks.com","databricks.token" = "<personal_access_token>","databricks.catalog.name" = "<unity_catalog_name>","azure.blob.storage_account" = "<blob_storage_account_name>","azure.blob.shared_key" = "<blob_storage_account_shared_key>"); -
SAS Token 認証方式を使用する場合は、以下のコマンドを実行します。
CREATE EXTERNAL CATALOG databricks_unity_catalogPROPERTIES("type"="deltalake","hive.metastore.type" = "unity","databricks.host"= "https://xxxxxx.cloud.databricks.com","databricks.token" = "<personal_access_token>","databricks.catalog.name" = "<unity_catalog_name>","azure.blob.storage_account" = "<blob_storage_account_name>","azure.blob.container" = "<blob_container_name>","azure.blob.sas_token" = "<blob_storage_account_SAS_token>"); -
Azure で Vended Credential を使用し、Databricks Unity Catalog で Personal Access Token を使用する場合は、以下のコマンドを実行します。
CREATE EXTERNAL CATALOG databricks_unity_catalogPROPERTIES("type"="deltalake","hive.metastore.type" = "unity","databricks.host"= "https://xxxxxx.cloud.databricks.com","databricks.catalog.name" = "<unity_catalog_name>","databricks.token" = "<personal_access_token>");
Azure Data Lake Storage Gen2
-
Managed Identity 認証方式を使用する場合は、以下のコマンドを実行します。
CREATE EXTERNAL CATALOG databricks_unity_catalogPROPERTIES("type"="deltalake","hive.metastore.type" = "unity","databricks.host"= "https://xxxxxx.cloud.databricks.com","databricks.token" = "<personal_access_token>","databricks.catalog.name" = "<unity_catalog_name>","azure.adls2.oauth2_use_managed_identity" = "true","azure.adls2.oauth2_tenant_id" = "<service_principal_tenant_id>","azure.adls2.oauth2_client_id" = "<service_client_id>"); -
Shared Key 認証方式を使用する場合は、以下のコマンドを実行します。
CREATE EXTERNAL CATALOG databricks_unity_catalogPROPERTIES("type"="deltalake","hive.metastore.type" = "unity","databricks.host"= "https://xxxxxx.cloud.databricks.com","databricks.token" = "<personal_access_token>","databricks.catalog.name" = "<unity_catalog_name>","azure.adls2.storage_account" = "<storage_account_name>","azure.adls2.shared_key" = "<shared_key>"); -
Service Principal 認証方式を使用する場合は、以下のコマンドを実行します。
CREATE EXTERNAL CATALOG databricks_unity_catalogPROPERTIES("type"="deltalake","hive.metastore.type" = "unity","databricks.host"= "https://xxxxxx.cloud.databricks.com","databricks.token" = "<personal_access_token>","databricks.catalog.name" = "<unity_catalog_name>","azure.adls2.oauth2_client_id" = "<service_client_id>","azure.adls2.oauth2_client_secret" = "<service_principal_client_secret>","azure.adls2.oauth2_client_endpoint" = "<service_principal_client_endpoint>");
Google GCS
-
VM ベース認証方式を使用する場合は、以下のコマンドを実行します。
CREATE EXTERNAL CATALOG databricks_unity_catalogPROPERTIES("type"="deltalake","hive.metastore.type" = "unity","databricks.host"= "https://xxxxxx.cloud.databricks.com","databricks.token" = "<personal_access_token>","databricks.catalog.name" = "<unity_catalog_name>","gcp.gcs.use_compute_engine_service_account" = "true"); -
サービスアカウントベース認証方式を使用する場合は、以下のコマンドを実行します。
CREATE EXTERNAL CATALOG databricks_unity_catalogPROPERTIES("type"="deltalake","hive.metastore.type" = "unity","databricks.host"= "https://xxxxxx.cloud.databricks.com","databricks.token" = "<personal_access_token>","databricks.catalog.name" = "<unity_catalog_name>","gcp.gcs.service_account_email" = "<google_service_account_email>","gcp.gcs.service_account_private_key_id" = "<google_service_private_key_id>","gcp.gcs.service_account_private_key" = "<google_service_private_key>"); -
なりすまし(Impersonation)ベース認証方式を使用する場合:
-
VM インスタンスがサービスアカウントになりすます場合は、以下のコマンドを実行します。
CREATE EXTERNAL CATALOG databricks_unity_catalogPROPERTIES("type"="deltalake","hive.metastore.type" = "unity","databricks.host"= "https://xxxxxx.cloud.databricks.com","databricks.token" = "<personal_access_token>","databricks.catalog.name" = "<unity_catalog_name>","gcp.gcs.use_compute_engine_service_account" = "true","gcp.gcs.impersonation_service_account" = "<assumed_google_service_account_email>"); -
サービスアカウントが別のサービスアカウントになりすます場合は、以下のコマンドを実行します。
CREATE EXTERNAL CATALOG databricks_unity_catalogPROPERTIES("type"="deltalake","hive.metastore.type" = "unity","databricks.host"= "https://xxxxxx.cloud.databricks.com","databricks.token" = "<personal_access_token>","databricks.catalog.name" = "<unity_catalog_name>","gcp.gcs.service_account_email" = "<google_service_account_email>","gcp.gcs.service_account_private_key_id" = "<meta_google_service_account_email>","gcp.gcs.service_account_private_key" = "<meta_google_service_account_email>","gcp.gcs.impersonation_service_account" = "<data_google_service_account_email>");
-
-
GCS で Vended Credential を使用し、Databricks Unity Catalog で Service Principal を使用する場合は、以下のコマンドを実行します。
CREATE EXTERNAL CATALOG databricks_unity_catalogPROPERTIES("type"="deltalake","hive.metastore.type" = "unity","databricks.host"= "https://xxxxxx.cloud.databricks.com","databricks.catalog.name" = "<unity_catalog_name>","databricks.client.id" = "<service_principal_client_id>","databricks.client.secret" = "<service_principal_client_secret>","databricks.catalog.name" = "<unity_catalog_name>");
サポートされる機能
現在、Delta Lake カタログでは以下のテーブル機能をサポートしています。
- V2 Checkpoint(v3.3.0 以降)
- Timestamp without Timezone(v3.3.1 以降)
- Column Mapping(v3.3.6 以降)
- Deletion Vector(v3.4.1 以降)
Databricks Unity Catalog 用 Iceberg カタログを作成する
データベースは、Iceberg カタログを作成することで、Databricks Unity Catalog 内の Iceberg テーブルへのアクセスをサポートします。これにより、Unity Catalog によって管理される Iceberg 形式のテーブルをクエリできます。
構文
CREATE EXTERNAL CATALOG <catalog_name>
[COMMENT <comment>]
PROPERTIES
(
"type" = "iceberg",
MetastoreParams,
StorageCredentialParams,
MetadataUpdateParams
)
パラメータ
catalog_name
Iceberg カタログの名前です。命名規則は以下のとおりです。
- 名前には英字、数字(0~9)、およびアンダースコア(_)を使用できます。先頭は英字である必要があります。
- 名前は大文字と小文字を区別し、最大長は 1023 文字です。
comment
Iceberg カタログの説明です。このパラメータは任意です。
type
データソースの種類です。値を iceberg に設定します。
MetastoreParams
REST Catalog インターフェイスを使用して、Iceberg テーブル用 Unity Catalog メタストアと統合するためのパラメータセットです。
-
認証方式として Personal Access Token を使用する場合は、
MetastoreParamsを以下のように設定します。"iceberg.catalog.type" = "rest","iceberg.catalog.uri" = "https://<databricks_workspace_url>/api/2.1/unity-catalog/iceberg-rest","iceberg.catalog.security" = "oauth2","iceberg.catalog.oauth2.token" = "<personal_access_token>","iceberg.catalog.warehouse" = "<catalog_name>" -
認証方式として Service Principal を使用する場合は、
MetastoreParamsを以下のように設定します。"iceberg.catalog.type" = "rest","iceberg.catalog.uri" = "https://<databricks_workspace_url>/api/2.1/unity-catalog/iceberg-rest","iceberg.catalog.security" = "oauth2","iceberg.catalog.oauth2.server-uri" = "https://<databricks_workspace_url>/oidc/v1/token","iceberg.catalog.oauth2.credential" = "<client_id>:<client_secret>","iceberg.catalog.warehouse" = "<catalog_name>","iceberg.catalog.oauth2.scope" = "all-apis"
| パラメータ | 必須 | 説明 |
|---|---|---|
iceberg.catalog.type | はい | Iceberg クラスタで使用するメタストアの種類です。値を rest に設定します。 |
iceberg.catalog.uri | はい | Databricks Unity Catalog REST API エンドポイントの URI です。形式: https://<databricks_workspace_url>/api/2.1/unity-catalog/iceberg-rest |
iceberg.catalog.security | はい | 使用する認証プロトコルの種類です。値を oauth2 に設定します。 |
iceberg.catalog.oauth2.token | いいえ | Unity Catalog メタストアへのアクセスに使用する Personal Access Token です。Personal Access Token 認証を使用する場合に設定します。 |
iceberg.catalog.oauth2.server-uri | いいえ | OIDC プロバイダの URI です。Service Principal 認証を使用する場合に設定します。 |
iceberg.catalog.oauth2.credential | いいえ | Unity Catalog メタストアへのアクセスに使用する Service Principal の認証情報です。形式は <client_id>:<client_secret> です。Service Principal 認証を使用する場合に設定します。 |
iceberg.catalog.warehouse | はい | Unity Catalog の名前です。 |
StorageCredentialParams
Iceberg カタログでは、オブジェクトストレージとして AWS S3、Microsoft Azure Blob Storage および Data Lake Storage Gen2、Google Cloud Storage をサポートしています。詳細については、「Iceberg catalog - StorageCredentialParams」を参照してください。
v4.0 以降、Databricks Unity Catalog は Vended Credential をサポートしています。Vended Credential はデフォルトで有効です。AWS S3 に保存されたデータへアクセスする場合は、StorageCredentialParams に aws.s3.region を指定するだけで利用できます。Azure Blob Storage、Azure Data Lake Storage Gen2、および Google Cloud Storage の場合は、StorageCredentialParams を指定する必要はありません。
MetastoreParams を設定することで、データベースは Unity Catalog にアクセスし、データベース名、テーブル名、およびテーブルロケーションを取得できます。ただし、テーブルデータ自体を読み取ることはできません。これは、Iceberg テーブルのデータファイルおよびメタデータファイルがストレージシステム内に保存されているためです。そのため、データベースが Iceberg テーブルのロケーション内のファイルを読み取れるようにするには、対応するストレージシステムの認証パラメータを設定する必要があります。
例
以下の例では、Databricks Unity Catalog 内の Iceberg データをクエリするために、さまざまなシナリオで Iceberg カタログを作成する方法を示します。
AWS S3
-
AWS の IAM ユーザーベース認証情報 を使用する場合は、以下のコマンドを実行します。
CREATE EXTERNAL CATALOG databricks_unity_iceberg_catalogPROPERTIES ("type"="iceberg","iceberg.catalog.type" = "rest","iceberg.catalog.uri" = "https://xxxxxx.cloud.databricks.com/api/2.1/unity-catalog/iceberg-rest","iceberg.catalog.security" = "oauth2","iceberg.catalog.oauth2.token" = "<personal_access_token>","iceberg.catalog.warehouse" = "<unity_catalog_name>","aws.s3.access_key" = "<iam_user_access_key>","aws.s3.secret_key" = "<iam_user_secret_key>","aws.s3.region" = "<aws_s3_region>"); -
AWS の インスタンスプロファイルベース認証情報 を使用する場合は、以下のコマンドを実行します。
CREATE EXTERNAL CATALOG databricks_unity_iceberg_catalogPROPERTIES ("type"="iceberg","iceberg.catalog.type" = "rest","iceberg.catalog.uri" = "https://xxxxxx.cloud.databricks.com/api/2.1/unity-catalog/iceberg","iceberg.catalog.security" = "oauth2","iceberg.catalog.oauth2.token" = "<personal_access_token>","iceberg.catalog.warehouse" = "<unity_catalog_name>","aws.s3.use_instance_profile" = "true","aws.s3.region" = "<aws_s3_region>"); -
AWS の Assume Role ベース認証情報 を使用する場合は、以下のコマンドを実行します。
CREATE EXTERNAL CATALOG databricks_unity_iceberg_catalogPROPERTIES ("type"="iceberg","iceberg.catalog.type" = "rest","iceberg.catalog.uri" = "https://xxxxxx.cloud.databricks.com/api/2.1/unity-catalog/iceberg-rest","iceberg.catalog.security" = "oauth2","iceberg.catalog.oauth2.token" = "<personal_access_token>","iceberg.catalog.warehouse" = "<unity_catalog_name>","aws.s3.use_instance_profile" = "true","aws.s3.iam_role_arn" = "<iam_role_arn>","aws.s3.region" = "<aws_s3_region>"); -
AWS で Vended Credential を使用し、Databricks Unity Catalog で Service Principal を使用する場合は、以下のコマンドを実行します。
CREATE EXTERNAL CATALOG databricks_unity_iceberg_catalogPROPERTIES("type"="iceberg","iceberg.catalog.type" = "rest","iceberg.catalog.uri" = "https://xxxxxx.cloud.databricks.com/api/2.1/unity-catalog/iceberg-rest","iceberg.catalog.security" = "oauth2","iceberg.catalog.oauth2.server-uri" = "https://<databricks_workspace_url>/oidc/v1/token","iceberg.catalog.oauth2.credential" = "<service_principal_client_id>:<service_principal_client_secret>","iceberg.catalog.warehouse" = "<unity_catalog_name>","iceberg.catalog.oauth2.scope" = "all-apis","aws.s3.region" = "<aws_s3_region>");
Azure Blob Storage
-
Shared Key 認証方式を使用する場合は、以下のコマンドを実行します。
CREATE EXTERNAL CATALOG databricks_unity_iceberg_catalogPROPERTIES("type"="iceberg","iceberg.catalog.type" = "rest","iceberg.catalog.uri" = "https://xxxxxx.cloud.databricks.com/api/2.1/unity-catalog/iceberg-rest","iceberg.catalog.security" = "oauth2","iceberg.catalog.oauth2.token" = "<personal_access_token>","iceberg.catalog.warehouse" = "<unity_catalog_name>","azure.blob.storage_account" = "<blob_storage_account_name>","azure.blob.shared_key" = "<blob_storage_account_shared_key>"); -
SAS Token 認証方式を使用する場合は、以下のコマンドを実行します。
CREATE EXTERNAL CATALOG databricks_unity_iceberg_catalogPROPERTIES("type"="iceberg","iceberg.catalog.type" = "rest","iceberg.catalog.uri" = "https://xxxxxx.cloud.databricks.com/api/2.1/unity-catalog/iceberg-rest","iceberg.catalog.security" = "oauth2","iceberg.catalog.oauth2.token" = "<personal_access_token>","iceberg.catalog.warehouse" = "<unity_catalog_name>","azure.blob.storage_account" = "<blob_storage_account_name>","azure.blob.container" = "<blob_container_name>","azure.blob.sas_token" = "<blob_storage_account_SAS_token>"); -
Azure で Vended Credential を使用し、Databricks Unity Catalog で Personal Access Token を使用する場合は、以下のコマンドを実行します。
CREATE EXTERNAL CATALOG databricks_unity_iceberg_catalogPROPERTIES("type"="iceberg","iceberg.catalog.type" = "rest","iceberg.catalog.uri" = "https://xxxxxx.cloud.databricks.com/api/2.1/unity-catalog/iceberg-rest","iceberg.catalog.security" = "oauth2","iceberg.catalog.oauth2.token" = "<personal_access_token>","iceberg.catalog.warehouse" = "<unity_catalog_name>");
Azure Data Lake Storage Gen2
-
Managed Identity 認証方式を使用する場合は、以下のコマンドを実行します。
CREATE EXTERNAL CATALOG databricks_unity_iceberg_catalogPROPERTIES("type"="iceberg","iceberg.catalog.type" = "rest","iceberg.catalog.uri" = "https://xxxxxx.cloud.databricks.com/api/2.1/unity-catalog/iceberg-rest","iceberg.catalog.security" = "oauth2","iceberg.catalog.oauth2.token" = "<personal_access_token>","iceberg.catalog.warehouse" = "<unity_catalog_name>","azure.adls2.oauth2_use_managed_identity" = "true","azure.adls2.oauth2_tenant_id" = "<service_principal_tenant_id>","azure.adls2.oauth2_client_id" = "<service_client_id>"); -
Shared Key 認証方式を使用する場合は、以下のコマンドを実行します。
CREATE EXTERNAL CATALOG databricks_unity_iceberg_catalogPROPERTIES("type"="iceberg","iceberg.catalog.type" = "rest","iceberg.catalog.uri" = "https://xxxxxx.cloud.databricks.com/api/2.1/unity-catalog/iceberg-rest","iceberg.catalog.security" = "oauth2","iceberg.catalog.oauth2.token" = "<personal_access_token>","iceberg.catalog.warehouse" = "<unity_catalog_name>","azure.adls2.storage_account" = "<storage_account_name>","azure.adls2.shared_key" = "<shared_key>"); -
Service Principal 認証方式を使用する場合は、以下のコマンドを実行します。
CREATE EXTERNAL CATALOG databricks_unity_iceberg_catalogPROPERTIES("type"="iceberg","iceberg.catalog.type" = "rest","iceberg.catalog.uri" = "https://xxxxxx.cloud.databricks.com/api/2.1/unity-catalog/iceberg-rest","iceberg.catalog.security" = "oauth2","iceberg.catalog.oauth2.token" = "<personal_access_token>","iceberg.catalog.warehouse" = "<unity_catalog_name>","azure.adls2.oauth2_client_id" = "<service_client_id>","azure.adls2.oauth2_client_secret" = "<service_principal_client_secret>","azure.adls2.oauth2_client_endpoint" = "<service_principal_client_endpoint>");
Google GCS
-
VM ベース認証方式を使用する場合は、以下のコマンドを実行します。
CREATE EXTERNAL CATALOG databricks_unity_iceberg_catalogPROPERTIES("type"="iceberg","iceberg.catalog.type" = "rest","iceberg.catalog.uri" = "https://xxxxxx.cloud.databricks.com/api/2.1/unity-catalog/iceberg-rest","iceberg.catalog.security" = "oauth2","iceberg.catalog.oauth2.token" = "<personal_access_token>","iceberg.catalog.warehouse" = "<unity_catalog_name>","gcp.gcs.use_compute_engine_service_account" = "true"); -
サービスアカウントベース認証方式を使用する場合は、以下のコマンドを実行します。
CREATE EXTERNAL CATALOG databricks_unity_iceberg_catalogPROPERTIES("type"="iceberg","iceberg.catalog.type" = "rest","iceberg.catalog.uri" = "https://xxxxxx.cloud.databricks.com/api/2.1/unity-catalog/iceberg-rest","iceberg.catalog.security" = "oauth2","iceberg.catalog.oauth2.token" = "<personal_access_token>","iceberg.catalog.warehouse" = "<unity_catalog_name>","gcp.gcs.service_account_email" = "<google_service_account_email>","gcp.gcs.service_account_private_key_id" = "<google_service_private_key_id>","gcp.gcs.service_account_private_key" = "<google_service_private_key>"); -
なりすまし(Impersonation)ベース認証方式を使用する場合:
-
VM インスタンスがサービスアカウントになりすます場合は、以下のコマンドを実行します。
CREATE EXTERNAL CATALOG databricks_unity_iceberg_catalogPROPERTIES("type"="iceberg","iceberg.catalog.type" = "rest","iceberg.catalog.uri" = "https://xxxxxx.cloud.databricks.com/api/2.1/unity-catalog/iceberg-rest","iceberg.catalog.security" = "oauth2","iceberg.catalog.oauth2.token" = "<personal_access_token>","iceberg.catalog.warehouse" = "<unity_catalog_name>","gcp.gcs.use_compute_engine_service_account" = "true","gcp.gcs.impersonation_service_account" = "<assumed_google_service_account_email>"); -
サービスアカウントが別のサービスアカウントになりすます場合は、以下のコマンドを実行します。
CREATE EXTERNAL CATALOG databricks_unity_iceberg_catalogPROPERTIES("type"="iceberg","iceberg.catalog.type" = "rest","iceberg.catalog.uri" = "https://xxxxxx.cloud.databricks.com/api/2.1/unity-catalog/iceberg-rest","iceberg.catalog.security" = "oauth2","iceberg.catalog.oauth2.token" = "<personal_access_token>","iceberg.catalog.warehouse" = "<unity_catalog_name>","gcp.gcs.service_account_email" = "<google_service_account_email>","gcp.gcs.service_account_private_key_id" = "<meta_google_service_account_email>","gcp.gcs.service_account_private_key" = "<meta_google_service_account_email>","gcp.gcs.impersonation_service_account" = "<data_google_service_account_email>");
-
-
GCS で Vended Credential を使用し、Databricks Unity Catalog で Service Principal を使用する場合は、以下のコマンドを実行します。
CREATE EXTERNAL CATALOG databricks_unity_iceberg_catalogPROPERTIES("type"="iceberg","iceberg.catalog.type" = "rest","iceberg.catalog.uri" = "https://xxxxxx.cloud.databricks.com/api/2.1/unity-catalog/iceberg-rest","iceberg.catalog.security" = "oauth2","iceberg.catalog.oauth2.server-uri" = "https://<databricks_workspace_url>/oidc/v1/token","iceberg.catalog.oauth2.credential" = "<service_principal_client_id>:<service_principal_client_secret>","iceberg.catalog.warehouse" = "<unity_catalog_name>","iceberg.catalog.oauth2.scope" = "all-apis");
制限事項
データベースでクエリ可能な テーブルタイプ は以下のとおりです。
| テーブルタイプ | サポート状況 |
|---|---|
| Unity Catalog managed table | サポート |
| Unity Catalog external Delta Lake table | サポート |
| Unity Catalog managed Iceberg table | サポート |
| Streaming table | 非サポート |
| Materialized view | 非サポート |
| View | 非サポート |
付録
Databricks Personal Access Token を作成する
Databricks ワークスペースユーザー用の Databricks Personal Access Token を作成するには、以下の手順を実行します。
-
Databricks ワークスペースで、上部バーに表示されている Databricks ユーザー名をクリックし、ドロップダウンメニューから Settings を選択します。
-
Developer をクリックします。
-
Access tokens の横にある Manage をクリックします。
-
Generate new token をクリックします。
-
将来的にこのトークンを識別しやすくするためのコメントを入力します。
-
トークンの有効期間(日数)を設定します。
Lifetime (days) を空欄のままにすると、トークンの有効期間はワークスペースで設定されている最大有効期間になります。デフォルトでは、ワークスペースの最大トークン有効期間は 730 日です。
-
Generate をクリックします。
-
表示されたトークンを安全な場所にコピーし、Done をクリックします。
ワークスペースでトークンを作成または使用できない場合は、ワークスペース管理者がトークンを無効化しているか、トークンの作成または使用権限を付与していない可能性があります。ワークスペース管理者に問い合わせるか、以下のトピックを参照してください。