メインコンテンツまでスキップ
バージョン: Latest-3.5

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 S3Microsoft Azure Blob Storage および Data Lake Storage Gen2Google Cloud Storage をサポートしています。詳細については、「Delta Lake catalog - StorageCredentialParams」を参照してください。

v4.0 以降、Databricks Unity Catalog は Vended Credential をサポートしています。Vended Credential はデフォルトで有効です。AWS S3 に保存されたデータへアクセスする場合は、StorageCredentialParamsaws.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_catalog
    PROPERTIES (
    "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_catalog
    PROPERTIES (
    "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_catalog
    PROPERTIES (
    "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_catalog
    PROPERTIES
    (
    "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_catalog
    PROPERTIES
    (
    "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_catalog
    PROPERTIES
    (
    "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_catalog
    PROPERTIES
    (
    "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_catalog
    PROPERTIES
    (
    "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_catalog
    PROPERTIES
    (
    "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_catalog
    PROPERTIES
    (
    "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_catalog
    PROPERTIES
    (
    "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_catalog
    PROPERTIES
    (
    "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_catalog
      PROPERTIES
      (
      "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_catalog
      PROPERTIES
      (
      "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_catalog
    PROPERTIES
    (
    "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 S3Microsoft Azure Blob Storage および Data Lake Storage Gen2Google Cloud Storage をサポートしています。詳細については、「Iceberg catalog - StorageCredentialParams」を参照してください。

v4.0 以降、Databricks Unity Catalog は Vended Credential をサポートしています。Vended Credential はデフォルトで有効です。AWS S3 に保存されたデータへアクセスする場合は、StorageCredentialParamsaws.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_catalog
    PROPERTIES (
    "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_catalog
    PROPERTIES (
    "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_catalog
    PROPERTIES (
    "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_catalog
    PROPERTIES
    (
    "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_catalog
    PROPERTIES
    (
    "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_catalog
    PROPERTIES
    (
    "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_catalog
    PROPERTIES
    (
    "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_catalog
    PROPERTIES
    (
    "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_catalog
    PROPERTIES
    (
    "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_catalog
    PROPERTIES
    (
    "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_catalog
    PROPERTIES
    (
    "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_catalog
    PROPERTIES
    (
    "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_catalog
      PROPERTIES
      (
      "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_catalog
      PROPERTIES
      (
      "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_catalog
    PROPERTIES
    (
    "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 を作成するには、以下の手順を実行します。

  1. Databricks ワークスペースで、上部バーに表示されている Databricks ユーザー名をクリックし、ドロップダウンメニューから Settings を選択します。

  2. Developer をクリックします。

  3. Access tokens の横にある Manage をクリックします。

  4. Generate new token をクリックします。

  5. 将来的にこのトークンを識別しやすくするためのコメントを入力します。

  6. トークンの有効期間(日数)を設定します。

    Lifetime (days) を空欄のままにすると、トークンの有効期間はワークスペースで設定されている最大有効期間になります。デフォルトでは、ワークスペースの最大トークン有効期間は 730 日です。

  7. Generate をクリックします。

  8. 表示されたトークンを安全な場所にコピーし、Done をクリックします。

注記

ワークスペースでトークンを作成または使用できない場合は、ワークスペース管理者がトークンを無効化しているか、トークンの作成または使用権限を付与していない可能性があります。ワークスペース管理者に問い合わせるか、以下のトピックを参照してください。