Připojení ke službě Azure Data Lake Storage Gen2 a Blob Storage

Poznámka:

Tento článek popisuje starší vzory konfigurace přístupu ke službě Azure Data Lake Storage Gen2. Databricks doporučuje použít Katalog Unity ke konfiguraci přístupu ke službě Azure Data Lake Storage Gen2 a svazkům pro přímou interakci se soubory. Viz Připojení ke cloudovému úložišti objektů pomocí katalogu Unity.

Tento článek vysvětluje, jak se připojit k Azure Data Lake Storage Gen2 a Blob Storage z Azure Databricks.

Poznámka:

Připojení k Azure Data Lake Storage Gen2 nebo Blob Storage pomocí přihlašovacích údajů Azure

Pro přístup ke službě Azure Data Lake Storage Gen2 nebo Blob Storage je možné použít následující přihlašovací údaje:

  • OAuth 2.0 s instančním objektem Microsoft Entra ID: Databricks doporučuje pro připojení k úložišti Azure používat instanční objekty Microsoft Entra ID. Pokud chcete vytvořit instanční objekt Microsoft Entra ID a poskytnout mu přístup k účtům úložiště Azure, přečtěte si téma Přístup k úložišti pomocí instančního objektu a Microsoft Entra ID (Azure Active Directory).

    Pokud chcete vytvořit instanční objekt Microsoft Entra ID, musíte mít Application Administrator roli nebo Application.ReadWrite.All oprávnění v Microsoft Entra ID. Pokud chcete přiřadit role k účtu úložiště, musíte být vlastníkem nebo uživatelem s rolí správce uživatelského přístupu Azure RBAC v účtu úložiště.

  • Sdílené přístupové podpisy (SAS):: K přístupu k úložišti Azure můžete použít tokeny SAS úložiště. Pomocí SAS můžete omezit přístup k účtu úložiště pomocí dočasných tokenů s jemně odstupňovaným řízením přístupu.

    Oprávnění tokenu SAS, která máte v účtu úložiště, kontejneru nebo souboru, můžete udělit jenom sami.

  • Klíče účtu: Ke správě přístupu ke službě Azure Storage můžete použít přístupové klíče účtu úložiště. Přístupové klíče účtu úložiště poskytují úplný přístup ke konfiguraci účtu úložiště a také k datům. Databricks doporučuje místo klíčů účtu použít instanční objekt Microsoft Entra ID nebo token SAS pro připojení k úložišti Azure.

    Pokud chcete zobrazit přístupové klíče účtu, musíte mít v účtu úložiště roli vlastníka, přispěvatele nebo operátora klíče účtu úložiště.

Databricks doporučuje používat omezení tajných klíčů pro ukládání všech přihlašovacích údajů. Uživatelům, instančním objektům a skupinám v pracovním prostoru můžete udělit přístup ke čtení oboru tajných klíčů. Tím se chrání přihlašovací údaje Azure a zároveň umožňují uživatelům přístup k úložišti Azure. Pokud chcete vytvořit obor tajných kódů, přečtěte si téma Obory tajných kódů.

Nastavení vlastností Sparku pro konfiguraci přihlašovacích údajů Azure pro přístup ke službě Azure Storage

Vlastnosti Sparku můžete nastavit tak, aby nakonfigurovali přihlašovací údaje Azure pro přístup k úložišti Azure. Přihlašovací údaje mohou být vymezeny na cluster nebo poznámkový blok. K ochraně přístupu ke službě Azure Storage můžete použít řízení přístupu ke clusteru i řízení přístupu k poznámkovému bloku. Podívejte se na výpočetní oprávnění a spolupráci pomocí poznámkových bloků Databricks.

Poznámka:

Instanční objekty Microsoft Entra ID je možné použít také pro přístup k úložišti Azure z SQL Warehouse, viz Povolení konfigurace přístupu k datům.

Pokud chcete nastavit vlastnosti Sparku, použijte následující fragment kódu v konfiguraci Sparku clusteru nebo poznámkovém bloku:

Instanční objekt Azure

K nastavení konfigurace Sparku clusteru použijte následující formát:

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

V poznámkových blocích můžete použít spark.conf.set , jak je znázorněno v následujícím příkladu:

service_credential = dbutils.secrets.get(scope="<secret-scope>",key="<service-credential-key>")

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

Nahradit

  • <secret-scope> s názvem oboru tajného kódu Databricks.
  • <service-credential-key> s názvem klíče obsahujícího tajný klíč klienta.
  • <storage-account> s názvem účtu úložiště Azure.
  • <application-id>s ID aplikace (klienta) pro aplikaci Microsoft Entra ID.
  • <directory-id>s ID adresáře (tenanta) pro aplikaci Microsoft Entra ID.

Tokeny SAS

Tokeny SAS můžete nakonfigurovat pro více účtů úložiště ve stejné relaci Sparku.

spark.conf.set("fs.azure.account.auth.type.<storage-account>.dfs.core.windows.net", "SAS")
spark.conf.set("fs.azure.sas.token.provider.type.<storage-account>.dfs.core.windows.net", "org.apache.hadoop.fs.azurebfs.sas.FixedSASTokenProvider")
spark.conf.set("fs.azure.sas.fixed.token.<storage-account>.dfs.core.windows.net", dbutils.secrets.get(scope="<scope>", key="<sas-token-key>"))

Nahradit

  • <storage-account> s názvem účtu Azure Storage.
  • <scope> s názvem oboru tajného kódu Azure Databricks.
  • <sas-token-key> s názvem klíče obsahujícího token SAS úložiště Azure.

Klíč účtu

spark.conf.set(
    "fs.azure.account.key.<storage-account>.dfs.core.windows.net",
    dbutils.secrets.get(scope="<scope>", key="<storage-account-access-key>"))

Nahradit

  • <storage-account> s názvem účtu Azure Storage.
  • <scope> s názvem oboru tajného kódu Azure Databricks.
  • <storage-account-access-key> s názvem klíče, který obsahuje přístupový klíč účtu úložiště Azure.

Přístup ke službě Azure Storage

Jakmile máte správně nakonfigurované přihlašovací údaje pro přístup ke kontejneru úložiště Azure, můžete s prostředky v účtu úložiště pracovat pomocí identifikátorů URI. Databricks doporučuje používat abfss ovladač pro větší zabezpečení.

spark.read.load("abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/<path-to-data>")

dbutils.fs.ls("abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/<path-to-data>")
CREATE TABLE <database-name>.<table-name>;

COPY INTO <database-name>.<table-name>
FROM 'abfss://container@storageAccount.dfs.core.windows.net/path/to/folder'
FILEFORMAT = CSV
COPY_OPTIONS ('mergeSchema' = 'true');

Příklad poznámkového bloku

Poznámkový blok instančních objektů služby ADLS Gen2 OAuth 2.0 s ID Microsoft Entra (dříve Azure Active Directory)

Získat poznámkový blok

Známé problémy se službou Azure Data Lake Storage Gen2

Pokud se pokusíte získat přístup k kontejneru úložiště vytvořenému prostřednictvím webu Azure Portal, může se zobrazit následující chyba:

StatusCode=404
StatusDescription=The specified filesystem does not exist.
ErrorCode=FilesystemNotFound
ErrorMessage=The specified filesystem does not exist.

Pokud je povolený hierarchický obor názvů, nemusíte vytvářet kontejnery prostřednictvím webu Azure Portal. Pokud se zobrazí tento problém, odstraňte kontejner objektů blob prostřednictvím webu Azure Portal. Po několika minutách budete mít přístup ke kontejneru. Případně můžete změnit abfss identifikátor URI tak, aby používal jiný kontejner, pokud se tento kontejner nevytvořil prostřednictvím webu Azure Portal.

Podívejte se na známé problémy se službou Azure Data Lake Storage Gen2 v dokumentaci Microsoftu.

Zastaralé vzory ukládání dat a přístupu k datům v Azure Databricks

Následující vzory úložiště jsou zastaralé: