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

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 katalogem Unity a Databricks doporučuje migrovat mimo připojení a místo toho spravovat zásady správného řízení dat pomocí katalogu Unity.

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

Připojení Azure Databricks vytvoří propojení mezi pracovním prostorem a cloudovým úložištěm objektů, které umožňuje pracovat s cloudovým úložištěm objektů pomocí známých cest k souborům vzhledem k systému souborů Databricks. Připojení fungují vytvořením místního aliasu /mnt v adresáři, 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ě?

Určuje source 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 vzorů přístupu můžete předat další specifikace konfigurace jako slovník do extra_configs.

Poznámka:

Databricks doporučuje nastavit konfiguraci Sparku specifické pro připojení a Hadoop 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.

Odpojení přípojného bodu

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

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

Upozorňující

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

Připojení ADLS Gen2 nebo Blob Storage s ABFS

K ověřování můžete připojit data v účtu úložiště Azure pomocí instančního objektu aplikace Microsoft Entra ID (dříve Azure Active Directory). Další informace najdete v tématu Přístup k úložišti s Microsoft Entra ID (dříve Azure Active Directory) pomocí instančního objektu.

Důležité

  • Všichni uživatelé v pracovním prostoru Azure Databricks mají přístup k připojenému účtu ADLS Gen2. Instanční objekt, který používáte pro přístup k účtu ADLS Gen2, by měl mít udělený přístup pouze k ho účtu ADLS Gen2; 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ůžou vést k chybám. Ujistěte se, že produkční úlohy nepřipojí ú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 Gen2 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

  • <application-id>s ID aplikace (klienta) 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 Gen2.
  • <storage-account-name> s názvem účtu úložiště ADLS Gen2.
  • <mount-name> s názvem zamýšleného přípojného bodu v DBFS.