Připojení cloudového úložiště objektů v Azure Databricks

Důležité

Připojení DBFS jsou zastaralý vzor a nejsou kompatibilní s bezserverovou architekturou Databricks. Nové účty jsou zřízené bez přístupu k těmto funkcím. Databricks místo toho doporučuje používat externí umístění katalogu Unity.

Azure Databricks umožňuje uživatelům připojit cloudové úložiště objektů k systému souborů Databricks (DBFS), aby zjednodušili vzory přístupu k datům pro uživatele, kteří nejsou v cloudových konceptech. Připojená data nefungují s Unity Catalog a Databricks doporučuje přejít od používání připojení a místo toho využít Unity Catalog ke správě dat.

Jak Azure Databricks připojuje cloudové úložiště objektů?

Připojení Azure Databricks vytvoří propojení mezi pracovním prostorem a úložištěm cloudových objektů, které umožňuje pracovat s cloudovým úložištěm objektů pomocí známých cest souborů ve vztahu k systému souborů Databricks. Systémová připojení fungují vytvořením místního aliasu pod adresářem /mnt, který ukládá následující informace:

  • Umístění cloudového úložiště objektů
  • Specifikace ovladačů pro připojení k účtu úložiště nebo kontejneru
  • Přihlašovací údaje zabezpečení vyžadované pro přístup k datům.

Jaká je syntaxe pro připojení úložiště?

source určuje identifikátor URI úložiště objektů (a může volitelně zakódovat přihlašovací údaje zabezpečení). Určuje mount_point místní cestu v adresáři /mnt . Některé zdroje úložiště objektů podporují volitelný encryption_type argument. U některých způsobů přístupu můžete do extra_configs předat další specifikace konfigurace jako slovník.

Poznámka:

Databricks doporučuje nastavit konfiguraci Sparku a Hadoop specifickou pro připojení jako možnosti pomocí extra_configs. Tím se zajistí, že konfigurace jsou svázané s připojením, nikoli s clusterem nebo relací.

dbutils.fs.mount(
  source: str,
  mount_point: str,
  encryption_type: Optional[str] = "",
  extra_configs: Optional[dict[str:str]] = None
)

Než nakonfigurujete nebo změníte připojení dat, obraťte se na správce vašeho pracovního prostoru a cloudu, protože nesprávná konfigurace může poskytnout nezabezpečený přístup všem uživatelům ve vašem pracovním prostoru.

Poznámka:

Kromě přístupů popsaných v tomto článku můžete automatizovat připojení kbelíku s poskytovatelem Databricks Terraform a databricks_mount.

Odpojte přípojný bod

Pokud chcete odpojit přípojný bod, použijte následující příkaz:

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

Varování

Aby nedocházelo k chybám, nikdy neupravujte přípojný bod, zatímco ostatní úlohy ho čtou nebo do něj zapisují. Po úpravě připojení vždy spusťte dbutils.fs.refreshMounts() na všech ostatních spuštěných clusterech, aby se zajistilo rozšíření všech aktualizací připojení. Viz příkaz refreshMounts (dbutils.fs.refreshMounts).

Připojení ADLS nebo Blob Storage pomocí ABFS

Data můžete připojit k účtu úložiště Azure pomocí aplikačního principálu služby Microsoft Entra ID pro ověřování. Další informace najdete v tématu Připojení ke službě Azure Data Lake Storage a blob Storage.

Důležité

  • Všichni uživatelé v pracovním prostoru Azure Databricks mají přístup k připojenému účtu ADLS. Instanční objekt, který používáte pro přístup k účtu ADLS, by měl mít udělený přístup pouze k danému účtu ADLS; Neměl by mít udělený přístup k jiným prostředkům Azure.
  • Když vytvoříte přípojný bod prostřednictvím clusteru, můžou uživatelé clusteru okamžitě přistupovat k přípojovému bodu. Pokud chcete přípojný bod použít v jiném spuštěném clusteru, musíte v něm spustit příkaz dbutils.fs.refreshMounts(), aby bylo možné nově vytvoření přípojný bod použít.
  • Odpojení přípojného bodu v době, kdy jsou spuštěné úlohy, může vést k chybám. Ujistěte se, že produkční úlohy neodpojí úložiště jako součást zpracování.
  • Přípojné body, které používají tajné klíče, se automaticky neaktualizují. Pokud připojené úložiště spoléhá na tajný klíč, který se otočí, vyprší nebo odstraní, může dojít k chybám, například 401 Unauthorized. Pokud chcete takovou chybu vyřešit, musíte úložiště odpojit a znovu připojit.
  • Aby bylo možné úspěšně připojit účet úložiště Azure Data Lake Storage pomocí koncového bodu ABFS, musí být povolený hierarchický obor názvů (HNS).

Spuštěním následujícího příkazu v poznámkovém bloku ověřte a vytvořte přípojný bod.

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/",
  mountPoint = "/mnt/<mount-name>",
  extraConfigs = configs)

Nahradit

  • S <application-id> pro aplikaci Azure Active Directory.
  • <scope-name> s názvem oboru tajného kódu Databricks.
  • <service-credential-key-name> s názvem klíče obsahujícího tajný klíč klienta.
  • <directory-id> s ID adresáře (tenanta) pro aplikaci Azure Active Directory.
  • <container-name> s názvem kontejneru v účtu úložiště ADLS.
  • <storage-account-name> s názvem účtu úložiště ADLS.
  • <mount-name> s názvem zamýšleného přípojného bodu v DBFS.