メインコンテンツまでスキップ

データアクセス構成

important

これらの手順は、従来のデータ アクセス パターンに適用されます。Databricksデータ アクセスにUnity Catalog外部ロケーションを使用することをお勧めします。 「Unity Catalog を使用してクラウド オブジェクト ストレージに接続する」を参照してください。

この記事では、ワークスペースでインスタンス最適とデータ アクセス プロパティを管理する方法について説明します。 これらの設定は、ワークスペース内のすべてのSQLウェアハウスに適用されます。 また、設定したインスタンスは、ワークスペース内のサーバレスコンピュートリソースでも利用できます。

これらの設定を変更すると、実行中のすべてのSQLウェアハウスが再起動されます。

インスタンスを使用するようにSQLウェアハウスとサーバレス コンピュートを構成する

この設定により、ワークスペース内のすべてのSQLウェアハウスとサーバレス コンピュートがインスタンス設定を通じてAWSストレージにアクセスできるようになります。

適切なインスタンスに関する情報については、「チュートリアル: インスタンス適切なS3アクセスの設定」を参照してください。

ワークスペース内のすべてのSQLウェアハウスおよびサーバレス コンピュートで使用されるインスタンスを設定するには、次の手順を実行します。

  1. ワークスペースの上部バーでユーザー名をクリックし、ドロップダウンから [ 設定 ] を選択します。
  2. コンピュート 」タブをクリックします。
  3. SQL「 ウェアハウス」と「サーバレス コンピュート 」の横にある 「管理 」をクリックします。
  4. インスタンスプロファイル ドロップダウンで、インスタンスプロファイルを選択します。
  5. [変更を保存] をクリックします。

この設定を更新すると、すべてのウェアハウスが再起動します。 サーバレス コンピュートを使用している場合、ジョブは最大 5 分間実行してから終了してから再試行します。 ノートブックでサーバレス コンピュートを使用している場合は、クエリの実行を 5 分間続けることができます。 5 分後、処理中のクエリは請求を発生せずに一時的に実行され続けたように見えますが、新しいセッションを開始して再試行するように指示するエラー メッセージが表示されて失敗します。

警告
  • ユーザーがインスタンスプロファイルを使用する権限を持っていない場合、ユーザーが作成したすべての SQLウェアハウスの起動に失敗します。
  • インスタンスプロファイルが有効でない場合、すべての SQLウェアハウスが異常になります。

Databricks Terraformプロバイダーdatabricks_sql_global_configを使用してインスタンスプロファイルを構成することもできます。

SQLウェアハウスのデータ アクセス プロパティの構成

注記

この設定はSQLウェアハウスでのみサポートされており、ワークスペースのサーバレス ノートブック、ジョブ、パイプラインには適用されません。

データ アクセス プロパティは、ウェアハウスがデータ ソースおよび認証レイヤーと対話する方法を構成するのに役立ちます。 これは、従来のHive metastoreの代わりに外部メタストアを使用するワークロードに特に役立ち、システム間でデータ アクセス構成を調整できます。

すべてのSQLをデータ アクセス プロパティで構成するには:

  1. ワークスペースの上部バーでユーザー名をクリックし、ドロップダウンから [ 設定 ] を選択します。

  2. コンピュート 」タブをクリックします。

  3. SQLウェアハウス の横にある「 管理 」をクリックします。

  4. [データ アクセス構成 ] テキスト ボックスで、メタストア プロパティを含むキーと値のペアを指定します。

important

シークレット値を Spark に公開せずに Spark 設定プロパティをシークレットの値に設定するには、値を {{secrets/<secret-scope>/<secret-name>}}に設定します。 <secret-scope>をシークレットスコープに、<secret-name>をシークレット名に置き換えます。値は {{secrets/ and end with }}で始まる必要があります。 この構文の詳細については、「 シークレットの管理」を参照してください

  1. [ 保存 ]をクリックします。

Databricks Terraform プロバイダーdatabricks_sql_global_config を使用して、データ アクセス プロパティを構成することもできます。

サポートされているプロパティ

  • * が末尾にあるエントリの場合、その接頭辞内のすべてのプロパティがサポートされます。

    たとえば、 spark.sql.hive.metastore.*spark.sql.hive.metastore.jarsspark.sql.hive.metastore.version の両方がサポートされていることを示し、 spark.sql.hive.metastoreで始まるその他のプロパティはサポートされています。

  • 値に機密情報が含まれているプロパティの場合は、機密情報を シークレット に保存し、構文 secrets/<secret-scope>/<secret-name>を使用してプロパティの値をシークレット名に設定できます。

SQLウェアハウスでは、次のプロパティがサポートされています。

  • spark.databricks.hive.metastore.glueCatalog.enabled
  • spark.databricks.delta.catalog.update.enabled false
  • spark.sql.hive.metastore.* (spark.sql.hive.metastore.jarsspark.sql.hive.metastore.jars.path はサーバレス SQLウェアハウスではサポートされていません。
  • spark.sql.warehouse.dir
  • spark.hadoop.aws.region
  • spark.hadoop.datanucleus.*
  • spark.hadoop.fs.*
  • spark.hadoop.hive.*
  • spark.hadoop.javax.jdo.option.*
  • spark.hive.*
  • spark.hadoop.aws.glue.*

これらのプロパティを設定する方法の詳細については、「 外部 Hive metastoreAWS Glue データ カタログ」を参照してください。

AWSサーバレスSQL ウェアハウスで使用する インスタンスプロファイルを確認または設定します

Databricks SQLで既にインスタンスプロファイルを使用している場合、インスタンスプロファイルに関連付けられたロールには、サーバーレスSQLウェアハウスが使用できるようにDatabricksサーバーレスコンピューティングの信頼関係ステートメントが必要となります。

インスタンスプロファイルが作成された方法と時期によっては、すでに信頼関係がある可能性があるため、ロールを変更する必要がない場合があります。 インスタンスプロファイルが次の方法で作成された場合、信頼関係ステートメントが含まれている可能性があります。

  • 2022年6月24日以降、インスタンスプロファイルは、AWSクイックスタートを使用したDatabricksワークスペース作成の一部として作成されました。
  • 2022 年 6 月 24 日以降、組織内の誰かが Databricks 記事の手順に従って 、インスタンスプロファイルを手動で作成しました。

このセクションでは、インスタンスプロファイルに関連付けられているロールに信頼関係ステートメントがあることを 確認または更新する 方法について説明します。これにより、サーバーレスSQLウェアハウスがロールを用いてS3バケットにアクセスできるようになります。

important

これらの手順を実行するには、 Databricks ワークスペース管理者であり、ワークスペースが Databricks SQLに使用しているインスタンスプロファイルを確認する必要があります。 また、ロールの信頼関係ポリシーを確認したり、必要な変更を加えたりするには、AWS アカウント管理者である必要があります。これらの管理者タイプの両方に対応していない場合は、組織内の適切な管理者に連絡して、これらの手順を完了してください。

  1. 管理設定ページでコンピュート タブをクリックし、 SQLウェアハウス の横にある[管理] をクリックします。

  2. [ データセキュリティ ] セクションの [ インスタンスプロファイル ] フィールドをご覧ください。Databricks SQLのAWSインスタンスプロファイルを使用してルートバケット以外のAWS S3バケットに接続するようにワークスペースが設定されているかどうかを確認してください。

    • インスタンスプロファイルを使用する場合、その名前は インスタンスプロファイル フィールドに表示されます。 次のステップのためにメモしておきます。
    • フィールド値が None の場合、ワークスペースのルートバケット以外の S3 バケットにアクセスするために インスタンスプロファイル を使用していません。セットアップが完了しました。
  3. インスタンスプロファイル名が関連付けられたロール名と一致するかどうかを確認します。

    1. AWS コンソールで、 IAM サービスの [ロール] タブに移動します。アカウント内のすべての IAMロールが一覧表示されます。

    2. このセクションで前に見つけたインスタンスプロファイルDatabricks SQL フィールドの[ データセキュリティ]セクションの 管理設定で、インスタンスプロファイル名と一致する名前のロールをクリックします。

    3. 概要で、[ ロールARN ] フィールドと [ インスタンスプロファイルARN ] フィールドを探します。

    4. これら 2 つのフィールドの末尾の最後のスラッシュの後に一致する名前があるかどうかを確認します。例えば:

      インスタンスのプロファイル名とロールのARN名は一致しますか?

  4. 前の手順でロール名 (ロール ARNプロファイルの最後のスラッシュの後のテキスト ) とインスタンスプロファイル名 (インスタンスプロファイル ARNの最後のスラッシュの後のテキスト) が一致しないと判断した場合は、インスタンスプロファイルの登録を編集してIAMロールARNを指定します。

    1. インスタンスプロファイルを編集するには、[ インスタンスプロファイル ] フィールドの下にある [ 構成 ] ボタンをクリックします。
    2. インスタンスプロファイルの名前をクリックします。
    3. [ 編集 ] をクリックします。
    4. オプションの [ ロール ARN ] フィールドに、インスタンスプロファイルに関連付けられたロールのロールARNを貼り付けます。これは、ロール名がインスタンスプロファイル名と一致しない場合でも、インスタンスプロファイルがDatabricks SQLサーバーレスで動作することを可能にするための重要な手順です。
    5. [ 保存 ]をクリックします。
  5. AWS コンソールで、信頼関係を確認または編集します。

    1. AWS コンソールの IAM サービスの [ロール] タブで、変更するインスタンスプロファイルロールをクリックします。

    2. [ 信頼関係 ] のタブをクリックします。

    3. 既存の信頼ポリシーを表示します。 ポリシーに以下の JSON ブロックがすでに含まれている場合、この手順は以前に完了しているため、次の手順は無視してかまいません。

    4. [ 信頼ポリシーの編集 ] をクリックします。

    5. 既存の Statement 配列で、既存の信頼ポリシーの末尾に次の JSON ブロックを追加します。既存のポリシーを上書きしないことを確認します。

      JSON
      {
      "Effect": "Allow",
      "Principal": {
      "AWS": ["arn:aws:iam::790110701330:role/serverless-customer-resource-role"]
      },
      "Action": "sts:AssumeRole",
      "Condition": {
      "StringEquals": {
      "sts:ExternalId": [
      "databricks-serverless-<YOUR-WORKSPACE-ID1>",
      "databricks-serverless-<YOUR-WORKSPACE-ID2>"
      ]
      }
      }
      }

      ステートメントで変更する必要があるのは、ワークスペース ID だけです。 YOUR_WORKSPACE-IDを、このロールを使用するワークスペースの 1 つ以上の Databricks ワークスペース ID に置き換えます。 ワークスペースの使用中にワークスペース ID を取得するには、URL を確認します。 たとえば、 https://<databricks-instance>/?o=6280049833385130では、 o= の後の数字がワークスペース ID です。

      Principal.AWSフィールドには、AWS リージョンタイプに基づいて次のいずれかの値を指定する必要があります。これらは、 Databricksによって管理されるサーバレス コンピュート ロールを参照します。

      • AWS 商用リージョン : arn:aws:iam::790110701330:role/serverless-customer-resource-role
      • AWS GovCloud(米国) : arn:aws-us-gov:iam::170655000336:role/serverless-customer-resource-role
      • AWS GovCloud (米国国防総省) : arn:aws-us-gov:iam::170644377855:role/serverless-customer-resource-role
    6. ポリシーの確認 」をクリックします。

    7. [変更を保存] をクリックします。

important

インスタンスプロファイルが後で変更された場合は、これらのステップを繰り返して、インスタンスプロファイルのロールの信頼関係に必要な追加のステートメントが含まれていることを確認します。

トラブルシューティング

信頼関係が正しく構成されていない場合、クラスターは失敗し、「クラスターの作成要求が例外で失敗しました。例外INVALID_PARAMETER_VALUE: IAMロール <role-id> には必要な信頼関係がありません」というメッセージが表示されます。

このエラーが発生した場合は、ワークスペース ID が正しくないか、信頼ポリシーが正しいロールで正しく更新されていない可能性があります。

AWSサーバレスSQL ウェアハウスで使用する インスタンスプロファイルの確認または設定 の手順を慎重に実行して、信頼関係を更新します。

GlueサーバレスSQL ウェアハウスの メタストアの構成

AWS Glue メタストアを指定するか、データソース設定を追加する必要がある場合は、管理設定ページの [Data Access Configuration ] フィールドを更新します。

important

サーバーレスSQLウェアハウスは、デフォルトのDatabricksメタストアとAWS Glueをメタストアとしてサポートしていますが、外部のHiveメタストアはサポートしません。