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ů a službám 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:
- Starší verze ovladače objektů blob služby Windows Azure Storage (WASB) je zastaralá. ABFS má oproti WASB řadu výhod. Viz dokumentace k Azure v ABFS. Dokumentaci pro práci se starším ovladačem WASB najdete v tématu Připojení ke službě Azure Blob Storage pomocí WASB (starší verze).
- Platforma Azure oznámila nevyřízené vyřazení Azure Data Lake Storage Gen1. Azure Databricks doporučuje migrovat všechna data z Azure Data Lake Storage Gen1 do Azure Data Lake Storage Gen2. Pokud jste ještě nemigrovali, přečtěte si téma Přístup k Azure Data Lake Storage Gen1 z Azure Databricks.
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 Azure Data Lake Storage Gen2 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 neboApplication.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ě.Důležité
Blob Storage nepodporuje instanční objekty Microsoft Entra ID.
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)
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é:
Databricks už nedoporučuje připojení externích umístění dat k systému souborů Databricks. Viz Připojení cloudového úložiště objektů v Azure Databricks.
Společnost Databricks už nedoporučuje používat předávání přihlašovacích údajů u Azure Data Lake Storage Gen2. Viz Přístup ke službě Azure Data Lake Storage pomocí předávání přihlašovacích údajů Microsoft Entra ID (starší verze).