Azure サービスプリンシパルで OAuth 2.0 を使用して Azure Data Lake Storage Gen2 にアクセスする Access Azure Data Lake Storage Gen2 using OAuth 2.0 with an Azure service principal

Azure Active Directory (Azure AD) アプリケーションサービスプリンシパルを認証に使用して、OAuth 2.0 を使用して Azure Data Lake Storage Gen2 (ADLS Gen2) アカウントのデータに安全にアクセスできます。You can securely access data in an Azure Data Lake Storage Gen2 (ADLS Gen2) account using OAuth 2.0 with an Azure Active Directory (Azure AD) application service principal for authentication. 認証にサービスプリンシパルを使用すると、ストレージアカウントのデータにアクセスするための2つのオプションが提供されます。Using a service principal for authentication provides two options for accessing data in your storage account:

  • 特定のファイルまたはパスへのマウントポイントA mount point to a specific file or path
  • データへの直接アクセスDirect access to data

選択するオプションは、ADLS Gen2 ストレージでの Databricks の使用方法によって異なります。The option to select depends on how you plan to use Databricks with ADLS Gen2 storage:

  • 複数のワークスペースユーザーに特定のパスまたはファイルへのアクセスを提供するには、必要なストレージリソースとパスへのマウントポイントを作成します。To provide access to a specific path or file to multiple workspace users, create a mount point to the required storage resource and path.
  • 異なるアクセス許可を持つ複数のワークスペースユーザーにアクセスを提供するには、 Azure Blob File System (ABFS) ドライバーを使用してデータに直接アクセスします。To provide access to multiple workspace users with different permissions, access data directly through the Azure Blob File System (ABFS) driver.

マウントポイントでは、標準のファイルシステムセマンティクスを使用してワークスペース全体で簡単にアクセスできるという利点もあります。Mount points also provide the benefit of being easily accessible across a workspace using standard file system semantics. これに対して、直接アクセスパスは notebook で完全に指定する必要があります。In contrast, direct access paths need to be fully specified in your notebooks. マウントポイントのこの機能により、ワークスペース内の複数のユーザーが共通のリソースにアクセスする際のユーザーエクスペリエンスが向上する場合があります。This feature of mount points may provide a better user experience for multiple users accessing common resources in a workspace.

この記事では、Azure AD アプリケーションとサービスプリンシパルを作成し、そのサービスプリンシパルを使用して ADLS Gen2 ストレージアカウントのデータをマウントまたは直接アクセスする方法について説明します。This article describes creating an Azure AD application and service principal and using that service principal to mount or directly access data in an ADLS Gen2 storage account. この記事で説明しているタスクの概要を次に示します。The following is an overview of the tasks this article walks through:

  1. Azure AD アプリケーションを作成します。これにより、ストレージアカウントにアクセスするために使用される、関連付けられたサービスプリンシパルが作成されます。Create an Azure AD application, which will create an associated service principal used to access the storage account.
  2. Azure Key Vault によってサポートされるシークレットスコープを作成します。Create an Azure Key Vault-backed secret scope. シークレットスコープには、Azure AD アプリケーションに関連付けられたクライアントシークレットが安全に格納されます。The secret scope will securely store the client secret associated with the Azure AD application.
  3. Azure AD アプリケーションに関連付けられているクライアントシークレットを Azure key vault に保存します。Save the client secret associated with the Azure AD application in the Azure key vault. ストレージアカウントに対して認証を行うには、クライアントシークレットが必要です。The client secret is required for authenticating to the storage account. Key vault は、セキュリティで保護されたシークレットのストレージを提供し、構成で直接参照しなくても使用できるようにします。The key vault provides secure storage of the secret and allows it to be used without directly referencing it in configuration.
  4. アプリケーションにロールを割り当てて、ADLS Gen2 ストレージアカウントにアクセスするために必要なアクセス許可をサービスプリンシパルに提供します。Assign roles to the application to provide the service principal with the required permissions to access the ADLS Gen2 storage account.
  5. ストレージアカウント内に1つ以上の コンテナー を作成します。Create one or more containers inside the storage account. コンテナーは、ファイルシステム内のディレクトリと同様に、Azure ストレージアカウント内のオブジェクトを整理する手段を提供します。Like directories in a filesystem, containers provide a way to organize objects in an Azure storage account. ADLS Gen2 ストレージアカウントにアクセスするには、先に1つ以上のコンテナーを作成する必要があります。You’ll need to create one or more containers before you can access an ADLS Gen2 storage account.
  6. マウントポイントまたは直接アクセスを使用して ADLS Gen2 ストレージアカウントを認証し、アクセスします。Authenticate and access the ADLS Gen2 storage account through a mount point or direct access.

この記事では Azure Key Vault でサポートされるシークレットスコープの使用について説明しますが、Databricks によってサポートされる シークレットスコープ を使用してクライアントシークレットを格納することもできます。This article describes using an Azure Key Vault-backed secret scope, but you can also use a Databricks-backed secret scope to store the client secret.

要件 Requirements

Azure Active Directory アプリケーションを 登録する Register an Azure Active Directory application

Azure AD アプリケーションを登録 し、適切なアクセス許可を割り当てると、ADLS Gen2 ストレージリソースにアクセスできるサービスプリンシパルが作成されます。Registering an Azure AD application and assigning appropriate permissions will create a service principal that can access ADLS Gen2 storage resources.

  1. Azure portal で、 Azure Active Directory サービスにアクセスします。In the Azure portal, go to the Azure Active Directory service.

  2. [ 管理] で、[ アプリの登録] をクリックします。Under Manage, click App Registrations.

  3. [ + 新規登録] をクリックします。Click + New registration. アプリケーションの名前を入力し、[ 登録] をクリックします。Enter a name for the application and click Register.

  4. [ 証明書 & シークレット] をクリックします。Click Certificates & Secrets.

  5. [ + 新しいクライアントシークレット] をクリックします。Click + New client secret.

  6. シークレットの説明を追加し、[ 追加] をクリックします。Add a description for the secret and click Add.

  7. 新しいシークレットの値をコピーして保存します。Copy and save the value for the new secret.

  8. アプリケーション登録の概要で、 アプリケーション (クライアント) idディレクトリ (テナント) id をコピーして保存します。In the application registration overview, copy and save the Application (client) ID and Directory (tenant) ID.

    アプリの登録の概要App registration overview

Azure key vault とシークレットのスコープを作成する Create an Azure key vault and secret scope

Azure key vault と、そのキーコンテナーによってサポートされる Azure Databricks シークレットスコープを作成するには、次のようにします。To create the Azure key vault and an Azure Databricks secret scope backed by that key vault:

  1. Azure portal に Azure Key Vault インスタンスを作成します。Create an Azure Key Vault instance in the Azure portal.
  2. Azure Key Vault インスタンスによってサポートされる Azure Databricks シークレットスコープを作成します。Create the Azure Databricks secret scope backed by the Azure Key Vault instance.

手順 1: Azure Key Vault インスタンスを作成する Step 1: Create an Azure Key Vault instance

  1. Azure portal で、[ key vault > + 追加 ] を選択し、キーコンテナーに名前を付けます。In the Azure portal, select Key vaults > + Add and give your key vault a name.

  2. [確認および作成] をクリックします。Click Review + create.

  3. 検証が完了したら、[ 作成] をクリックします。After validation completes, click Create.

  4. Key vault を作成したら、新しい key vault の [ プロパティ ] ページにアクセスします。After creating the key vault, go to the Properties page for the new key vault.

  5. コンテナーの URIリソース ID をコピーして保存します。Copy and save the Vault URI and Resource ID.

    Azure キー コンテナーのプロパティAzure key vault properties

手順 2: Azure Key Vault によってサポートされるシークレットスコープを作成する Step 2: Create an Azure Key Vault-backed secret scope

Azure Databricks リソースは、Key Vault によってサポートされるシークレットスコープを作成することによって、Azure key vault に格納されているシークレットを参照できます。Azure Databricks resources can reference secrets stored in an Azure key vault by creating a Key Vault-backed secret scope. Azure Databricks UI、Databricks secret CLI、または DATABRICKS secret API を使用して、Azure Key Vault によってサポートされるシークレットスコープを作成できます。You can use the Azure Databricks UI, the Databricks Secrets CLI, or the Databricks Secrets API to create the Azure Key Vault-backed secret scope. この記事では、UI と CLI の使用方法について説明します。This article describes using the UI and CLI.

Azure Databricks UI で Azure Databricks シークレットスコープを作成する Create the Azure Databricks secret scope in the Azure Databricks UI

  1. 「」の Azure Databricks [ シークレットスコープの作成 ] ページにアクセスし https://<per-workspace-url>/#secrets/createScope ます。Go to the Azure Databricks Create Secret Scope page at https://<per-workspace-url>/#secrets/createScope. を、 per-workspace-url Azure Databricks ワークスペースの ワークスペースごと の一意の URL に置き換えます。Replace per-workspace-url with the unique per-workspace URL for your Azure Databricks workspace.

  2. スコープ名 を入力してください。Enter a Scope Name.

  3. 「手順 1: Azure Key Vault インスタンスを作成する」で作成した Azure key Vault の コンテナー URIリソース ID の値を入力します。Enter the Vault URI and Resource ID values for the Azure key vault you created in Step 1: Create an Azure Key Vault instance.

  4. [作成] をクリックします。Click Create.

    シークレットスコープの作成Create secret scope

CLI で Azure Databricks シークレットスコープを作成する Create the Azure Databricks secret scope in the CLI

Databricks CLI を使用して Azure key vault によってサポートされるシークレットスコープを作成するには、ターミナルを開き、次のコマンドを実行します。To create a secret scope backed by the Azure key vault using the Databricks CLI, open a terminal and run the following command:

databricks secrets create-scope \
--scope <scope-name> \
--scope-backend-type AZURE_KEYVAULT \
--resource-id <azure-keyvault-resource-id> \
--dns-name <azure-keyvault-dns-name>

ReplaceReplace

  • <scope-name> 新しいスコープの名前を指定します。<scope-name> with a name for the new scope.
  • <azure-keyvault-resource-id> key vault リソース ID を使用します。<azure-keyvault-resource-id> with the key vault Resource ID.
  • <azure-keyvault-dns-name> コンテナーの URI を使用します。<azure-keyvault-dns-name> with the Vault URI.

手順 1: Azure Key Vault インスタンスを作成する」の値を使用した例を次に示します。An example using the values from Step 1: Create an Azure Key Vault instance:

databricks secrets create-scope \
--scope example-akv-scope \
--scope-backend-type AZURE_KEYVAULT \
--resource-id /subscriptions/… \
--dns-name https://example-akv.vault.azure.net/

Azure key vault にクライアントシークレットを保存する Save the client secret in the Azure key vault

  1. Azure portal で、 キーコンテナー サービスにアクセスします。In the Azure portal, go to the Key vaults service.

  2. 手順 1: Azure Key Vault インスタンスを作成する」で作成したキーコンテナーを選択します。Select the key vault created in Step 1: Create an Azure Key Vault instance.

  3. [ 設定 > シークレット] で、[ 生成/インポート] をクリックします。Under Settings > Secrets, click Generate/Import.

  4. [ 手動 アップロード] オプションを選択し、[ ] フィールドにクライアントシークレットを入力します。Select the Manual upload option and enter the client secret in the Value field.

    シークレットを作成しますCreate a secret

シークレット CLI を使用して、シークレットが正常に作成されたことを確認します。Use the Secrets CLI to verify the secret was created successfully:

databricks secrets list --scope example-akv-scope
Key name               Last updated
--------------------   --------------
example-adls2-secret   1605122724000

ロールを割り当てるAssign roles

ストレージアカウントに関連付けられている Azure AD アプリケーション登録にロールを割り当てることによって、ストレージリソースへのアクセスを制御します。You control access to storage resources by assigning roles to an Azure AD application registration associated with the storage account. この例では、 ストレージ Blob データ共同作成者 を ADLS Gen2 ストレージアカウントに割り当てます。This example assigns the Storage Blob Data Contributor to the ADLS Gen2 storage account. 特定の要件に応じて、他の役割の割り当てが必要になる場合があります。You may need to assign other roles depending on specific requirements.

  1. [Azure portal で、[ ストレージアカウント ] サービスにアクセスします。In the Azure portal, go to the Storage accounts service.

  2. このアプリケーションの登録に使用する ADLS Gen2 アカウントを選択します。Select the ADLS Gen2 account to use with this application registration.

  3. [ Access Control (IAM)] をクリックします。Click Access Control (IAM).

  4. [ + 追加 ] をクリックし、ドロップダウンメニューから [ ロールの割り当ての追加 ] を選択します。Click + Add and select Add role assignment from the dropdown menu.

  5. [選択] フィールドを Azure AD アプリケーション名に設定し、[ロール] を [ストレージ Blob データ共同作成者] に設定します。Set the Select field to the Azure AD application name and set Role to Storage Blob Data Contributor.

  6. [保存] をクリックします。Click Save.

    アプリケーション ロールの割り当てAssign application roles

コンテナーを作成する Create a container

コンテナーは、ファイルシステム内のディレクトリと同様に、Azure ストレージアカウント内のオブジェクトを整理する手段を提供します。Like directories in a filesystem, containers provide a way to organize objects in an Azure storage account. ADLS Gen2 ストレージアカウントにアクセスするには、先に1つ以上のコンテナーを作成する必要があります。You’ll need to create one or more containers before you can access an ADLS Gen2 storage account. コンテナーは、Azure Databricks notebook で 直接作成 することも、azure コマンドラインインターフェイス、azure API、または Azure portal を使用して作成することもできます。You can create a container directly in an Azure Databricks notebook or through the Azure command-line interface, the Azure API, or the Azure portal. ポータルを使用してコンテナーを作成するには、次の手順を実行します。To create a container through the portal:

  1. Azure portal で、[ ストレージアカウント] にアクセスします。In the Azure portal, go to Storage accounts.

  2. ADLS Gen2 アカウントを選択し、[ コンテナー] をクリックします。Select your ADLS Gen2 account and click Containers.

  3. [+ コンテナー] をクリックします。Click + Container.

  4. コンテナーの名前を入力し、[ 作成] をクリックします。Enter a name for your container and click Create.

    コンテナーの作成Create a container

ADLS Gen2 ストレージ のマウント Mount ADLS Gen2 storage

ADLS Gen2 ストレージをマウントするには:To mount ADLS Gen2 storage:

  1. サービスプリンシパルを資格情報として使用し、ADLS Gen2 ストレージアカウントに OAuth 2.0 認証を構成します。Configure OAuth 2.0 authentication to the ADLS Gen2 storage account, using the service principal as the credentials.
  2. Databricks API を使用してマウントポイントを作成します。Create the mount point through the Databricks API.

重要

  • Azure Databricks ワークスペースのすべてのユーザーが、マウントされた ADLS Gen2 アカウントにアクセスできます。All users in the Azure Databricks workspace have access to the mounted ADLS Gen2 account. ADLS Gen2 アカウントへのアクセスに使用するサービスプリンシパルには、その ADLS Gen2 アカウントへのアクセスのみを許可する必要があります。他の Azure リソースへのアクセスを許可しないでください。The service principal you use to access the ADLS Gen2 account should be granted access only to that ADLS Gen2 account; it should not be granted access to other Azure resources.
  • クラスターを介してマウントポイントを作成すると、クラスターユーザーはすぐにマウントポイントにアクセスできます。When you create a mount point through a cluster, cluster users can immediately access the mount point. 別の実行中のクラスターでマウントポイントを使用するには、その実行中のクラスターでを実行して、 dbutils.fs.refreshMounts() 新しく作成されたマウントポイントを使用できるようにする必要があります。To use the mount point in another running cluster, you must run dbutils.fs.refreshMounts() on that running cluster to make the newly created mount point available for use.
  • ジョブの実行中にマウントポイントをマウント解除すると、エラーが発生する可能性があります。Unmounting a mount point while jobs are running can lead to errors. 運用ジョブで、処理の一環としてストレージがマウント解除されないようにします。Ensure that production jobs do not unmount storage as part of processing.

Notebook で次のように実行して、マウントポイントを認証および作成します。Run the following in your notebook to authenticate and create a mount point.

configs = {"fs.azure.account.auth.type": "OAuth",
          "fs.azure.account.oauth.provider.type": "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider",
          "fs.azure.account.oauth2.client.id": "<application-id>",
          "fs.azure.account.oauth2.client.secret": dbutils.secrets.get(scope="<scope-name>",key="<service-credential-key-name>"),
          "fs.azure.account.oauth2.client.endpoint": "https://login.microsoftonline.com/<directory-id>/oauth2/token"}

# Optionally, you can add <directory-name> to the source URI of your mount point.
dbutils.fs.mount(
  source = "abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/",
  mount_point = "/mnt/<mount-name>",
  extra_configs = configs)
val configs = Map(
  "fs.azure.account.auth.type" -> "OAuth",
  "fs.azure.account.oauth.provider.type" -> "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider",
  "fs.azure.account.oauth2.client.id" -> "<application-id>",
  "fs.azure.account.oauth2.client.secret" -> dbutils.secrets.get(scope="<scope-name>",key="<service-credential-key-name>"),
  "fs.azure.account.oauth2.client.endpoint" -> "https://login.microsoftonline.com/<directory-id>/oauth2/token")
// Optionally, you can add <directory-name> to the source URI of your mount point.
dbutils.fs.mount(
  source = "abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/",
  mount_point = "/mnt/<mount-name>",
  extra_configs = configs)

ReplaceReplace

  • <application-id> Azure Active Directory アプリケーションの アプリケーション (クライアント) ID を使用します。<application-id> with the Application (client) ID for the Azure Active Directory application.
  • <scope-name> Databricks secret スコープ名を使用します。<scope-name> with the Databricks secret scope name.
  • <service-credential-key-name> には、クライアントシークレットを含むキーの名前を指定します。<service-credential-key-name> with the name of the key containing the client secret.
  • <directory-id> Azure Active Directory アプリケーションの ディレクトリ (テナント) ID を使用します。<directory-id> with the Directory (tenant) ID for the Azure Active Directory application.
  • <container-name> ADLS Gen2 ストレージアカウントのコンテナーの名前に置き換えます。<container-name> with the name of a container in the ADLS Gen2 storage account.
  • <storage-account-name> ADLS Gen2 ストレージアカウント名を使用します。<storage-account-name> with the ADLS Gen2 storage account name.
  • <mount-name> DBFS の目的のマウントポイントの名前に置き換えます。<mount-name> with the name of the intended mount point in DBFS.

DBFS 内のファイルのように、ADLS Gen2 ファイルシステム内のファイルにアクセスします。Access files in your ADLS Gen2 filesystem as if they were files in DBFS:

df = spark.read.text("/mnt/%s/...." % <mount-name>)
df = spark.read.text("dbfs:/mnt/<mount-name>/....")
val df = spark.read.text("/mnt/<mount-name>/....")
val df = spark.read.text("dbfs:/mnt/<mount-name>/....")

マウントポイントをマウント解除するには、次のコマンドを使用します。To unmount a mount point, use the following command:

dbutils.fs.unmount("/mnt/<mount-name>")

直接 ADLS Gen2 にアクセスするAccess ADLS Gen2 directly

ストレージリソースに直接アクセスするための資格情報を渡す方法は、データフレーム API と Dataset API のどちらを使用するか、RDD API を使用するかによって異なります。The way you pass credentials to access storage resources directly depends on whether you plan to use the DataFrame or Dataset API, or the RDD API.

データフレームまたは DataSet API DataFrame or DataSet API

Spark データフレームまたは Dataset Api を使用している場合、Databricks はノートブックのセッション構成でアカウントの資格情報を設定することをお勧めします。If you are using Spark DataFrame or Dataset APIs, Databricks recommends that you set your account credentials in your notebook’s session configs:

spark.conf.set("fs.azure.account.auth.type.<storage-account-name>.dfs.core.windows.net", "OAuth")
spark.conf.set("fs.azure.account.oauth.provider.type.<storage-account-name>.dfs.core.windows.net", "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider")
spark.conf.set("fs.azure.account.oauth2.client.id.<storage-account-name>.dfs.core.windows.net", "<application-id>")
spark.conf.set("fs.azure.account.oauth2.client.secret.<storage-account-name>.dfs.core.windows.net", dbutils.secrets.get(scope="<scope-name>",key="<service-credential-key-name>"))
spark.conf.set("fs.azure.account.oauth2.client.endpoint.<storage-account-name>.dfs.core.windows.net", "https://login.microsoftonline.com/<directory-id>/oauth2/token")

ReplaceReplace

  • <storage-account-name> ADLS Gen2 ストレージアカウントの名前に置き換えます。<storage-account-name> with the name of the ADLS Gen2 storage account.
  • <application-id> Azure Active Directory アプリケーションの アプリケーション (クライアント) ID を使用します。<application-id> with the Application (client) ID for the Azure Active Directory application.
  • <scope-name> Databricks secret スコープ名を使用します。<scope-name> with the Databricks secret scope name.
  • <service-credential-key-name> には、クライアントシークレットを含むキーの名前を指定します。<service-credential-key-name> with the name of the key containing the client secret.
  • <directory-id> Azure Active Directory アプリケーションの ディレクトリ (テナント) ID を使用します。<directory-id> with the Directory (tenant) ID for the Azure Active Directory application.

RDD APIRDD API

RDD API を使用して ADLS Gen2 にアクセスする場合、を使用して設定された Hadoop 構成オプションにアクセスすることはできません spark.conf.set(...)If you are using the RDD API to access ADLS Gen2, you cannot access Hadoop configuration options set using spark.conf.set(...). そのため、次のいずれかの方法を使用して資格情報を設定する必要があります。Therefore, you must set the credentials using one of the following methods:

警告

これらの資格情報は、クラスターにアクセスするすべてのユーザーが使用できます。These credentials are available to all users who access the cluster.

  • クラスターを作成するときに、Hadoop 構成オプションを Spark 構成として指定します。Specify the Hadoop configuration options as Spark configs when you create the cluster. spark.hadoop.RDD ジョブに使用される hadoop 構成にそれらを伝達するには、対応する hadoop 構成キーにプレフィックスを追加する必要があります。You must add the spark.hadoop. prefix to the corresponding Hadoop configuration keys to propagate them to the Hadoop configurations that are used for your RDD jobs:

    fs.azure.account.auth.type.<storage-account-name>.dfs.core.windows.net OAuth
    fs.azure.account.oauth.provider.type.<storage-account-name>.dfs.core.windows.net org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider
    fs.azure.account.oauth2.client.id.<storage-account-name>.dfs.core.windows.net <application-id>
    fs.azure.account.oauth2.client.secret.<storage-account-name>.dfs.core.windows.net <service-credential>
    fs.azure.account.oauth2.client.endpoint.<storage-account-name>.dfs.core.windows.net https://login.microsoftonline.com/<directory-id>/oauth2/token
    

    ReplaceReplace

    • <storage-account-name> ADLS Gen2 ストレージアカウントの名前に置き換えます。<storage-account-name> with the name of the ADLS Gen2 storage account.
    • <application-id> Azure Active Directory アプリケーションの アプリケーション (クライアント) ID を使用します。<application-id> with the Application (client) ID for the Azure Active Directory application.
    • <service-credential> クライアントシークレットの値を使用します。<service-credential> with the value of the client secret.
    • <service-credential-key-name> には、クライアントシークレットを含むキーの名前を指定します。<service-credential-key-name> with the name of the key containing the client secret.
    • <directory-id> Azure Active Directory アプリケーションの ディレクトリ (テナント) ID を使用します。<directory-id> with the Directory (tenant) ID for the Azure Active Directory application.
  • スケールユーザーは、で資格情報を設定でき spark.sparkContext.hadoopConfiguration ます。Scala users can set the credentials in spark.sparkContext.hadoopConfiguration:

    spark.sparkContext.hadoopConfiguration.set("fs.azure.account.auth.type.<storage-account-name>.dfs.core.windows.net", "OAuth")
    spark.sparkContext.hadoopConfiguration.set("fs.azure.account.oauth.provider.type.<storage-account-name>.dfs.core.windows.net", "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider")
    spark.sparkContext.hadoopConfiguration.set("fs.azure.account.oauth2.client.id.<storage-account-name>.dfs.core.windows.net", "<application-id>")
    spark.sparkContext.hadoopConfiguration.set("fs.azure.account.oauth2.client.secret.<storage-account-name>.dfs.core.windows.net", dbutils.secrets.get(scope="<scope-name>",key="<service-credential-key-name>"))
    spark.sparkContext.hadoopConfiguration.set("fs.azure.account.oauth2.client.endpoint.<storage-account-name>.dfs.core.windows.net", "https://login.microsoftonline.com/<directory-id>/oauth2/token")
    

    ReplaceReplace

    • <storage-account-name> ADLS Gen2 ストレージアカウントの名前に置き換えます。<storage-account-name> with the name of the ADLS Gen2 storage account.
    • <application-id> Azure Active Directory アプリケーションの アプリケーション (クライアント) ID を使用します。<application-id> with the Application (client) ID for the Azure Active Directory application.
    • <scope-name> Databricks secret スコープ名を使用します。<scope-name> with the Databricks secret scope name.
    • <service-credential-key-name> には、クライアントシークレットを含むキーの名前を指定します。<service-credential-key-name> with the name of the key containing the client secret.
    • <directory-id> Azure Active Directory アプリケーションの ディレクトリ (テナント) ID を使用します。<directory-id> with the Directory (tenant) ID for the Azure Active Directory application.

標準的な Spark Api と Databricks Api を使用して、ストレージアカウントから読み取ります。Use standard Spark and Databricks APIs to read from the storage account:

val df = spark.read.parquet("abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/<directory-name>")

dbutils.fs.ls("abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/<directory-name>")

ReplaceReplace

  • <container-name> ADLS Gen2 ストレージアカウントのコンテナーの名前に置き換えます。<container-name> with the name of a container in the ADLS Gen2 storage account.
  • <storage-account-name> ADLS Gen2 ストレージアカウント名を使用します。<storage-account-name> with the ADLS Gen2 storage account name.
  • <directory-name> ストレージアカウントのオプションのパスを使用します。<directory-name> with an optional path in the storage account.

ノートブックの例Example notebook

この notebook では、サービスプリンシパルの使用方法を示します。This notebook demonstrates using a service principal to:

  1. ADLS Gen2 ストレージアカウントに対して認証します。Authenticate to an ADLS Gen2 storage account.
  2. ストレージアカウントにファイルシステムをマウントします。Mount a filesystem in the storage account.
  3. モノのインターネット (IoT) データを含む JSON ファイルを新しいコンテナーに書き込みます。Write a JSON file containing Internet of things (IoT) data to the new container.
  4. 直接アクセスおよびマウントポイントを使用してファイルを一覧表示します。List files using direct access and through the mount point.
  5. 直接アクセスおよびマウントポイントを使用して、IoT ファイルの読み取りと表示を行います。Read and display the IoT file using direct access and through the mount point.

ADLS Gen2 notebook の概要Getting started with ADLS Gen2 notebook

ノートブックを入手Get notebook