Montera molnobjektlagring i Azure Databricks

Azure Databricks gör det möjligt för användare att montera molnobjektlagring till Databricks File System (DBFS) för att förenkla dataåtkomstmönster för användare som inte är bekanta med molnkoncept. Monterade data fungerar inte med Unity Catalog, och Databricks rekommenderar att du migrerar från att använda monteringar och i stället hantera datastyrning med Unity Catalog.

Hur monterar Azure Databricks molnobjektlagring?

Azure Databricks-monteringar skapar en länk mellan en arbetsyta och molnobjektlagring, vilket gör att du kan interagera med molnobjektlagring med hjälp av välbekanta filsökvägar i förhållande till Databricks-filsystemet. Monteringar fungerar genom att skapa ett lokalt alias under katalogen /mnt som lagrar följande information:

  • Platsen för molnobjektlagringen.
  • Drivrutinsspecifikationer för att ansluta till lagringskontot eller containern.
  • Säkerhetsautentiseringsuppgifter som krävs för åtkomst till data.

Vad är syntaxen för montering av lagring?

source Anger URI:n för objektlagringen (och kan eventuellt koda säkerhetsautentiseringsuppgifter). mount_point Anger den lokala sökvägen i /mnt katalogen. Vissa objektlagringskällor stöder ett valfritt encryption_type argument. För vissa åtkomstmönster kan du skicka ytterligare konfigurationsspecifikationer som en ordlista till extra_configs.

Kommentar

Databricks rekommenderar att du ställer in monteringsspecifik Spark- och Hadoop-konfiguration som alternativ med hjälp av extra_configs. Detta säkerställer att konfigurationerna är knutna till monteringen i stället för klustret eller sessionen.

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

Kontakta arbetsytan och molnadministratörerna innan du konfigurerar eller ändrar datamonteringar, eftersom felaktig konfiguration kan ge oskyddad åtkomst till alla användare på din arbetsyta.

Kommentar

Förutom de metoder som beskrivs i den här artikeln kan du automatisera monteringen av en bucket med Databricks Terraform-providern och databricks_mount.

Demontera en monteringspunkt

Om du vill demontera en monteringspunkt använder du följande kommando:

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

Varning

Undvik fel genom att aldrig ändra en monteringspunkt medan andra jobb läser eller skriver till den. När du har modifierat en montering kör dbutils.fs.refreshMounts() du alltid på alla andra kluster som körs för att sprida eventuella monteringsuppdateringar. Se refreshMounts-kommandot (dbutils.fs.refreshMounts).

Montera ADLS Gen2 eller Blob Storage med ABFS

Du kan montera data i ett Azure Storage-konto med hjälp av ett Microsoft Entra-ID (tidigare Azure Active Directory) programtjänsthuvudnamn för autentisering. Mer information finns i Access Storage with Microsoft Entra ID (tidigare Azure Active Directory) using a service principal (Åtkomstlagring med Microsoft Entra-ID (tidigare Azure Active Directory) med hjälp av tjänstens huvudnamn.

Viktigt!

  • Alla användare på Azure Databricks-arbetsytan har åtkomst till det monterade ADLS Gen2-kontot. Tjänstens huvudnamn som du använder för att komma åt ADLS Gen2-kontot ska endast beviljas åtkomst till det ADLS Gen2-kontot. Den bör inte beviljas åtkomst till andra Azure-resurser.
  • När du skapar en monteringspunkt via ett kluster kan klusteranvändare omedelbart komma åt monteringspunkten. Om du vill använda monteringspunkten i ett annat kluster som körs, kör du dbutils.fs.refreshMounts() på det klustret för att göra den nyligen skapade monteringspunkten tillgänglig för användning.
  • Om du demonterar en monteringspunkt medan jobb körs kan det leda till fel. Se till att produktionsjobben inte demonterar lagringen som en del av bearbetningen.
  • Monteringspunkter som använder hemligheter uppdateras inte automatiskt. Om monterad lagring förlitar sig på en hemlighet som roteras, upphör att gälla eller tas bort kan fel uppstå, till exempel 401 Unauthorized. För att lösa ett sådant fel måste du demontera och demontera lagringen igen.
  • Hierarkisk namnrymd (HNS) måste vara aktiverat för att kunna montera ett Azure Data Lake Storage Gen2-lagringskonto med hjälp av ABFS-slutpunkten.

Kör följande i anteckningsboken för att autentisera och skapa en monteringspunkt.

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)

Replace

  • <application-id>med program-ID:t (klient) för Azure Active Directory-programmet.
  • <scope-name> med namnet på Databricks-hemlighetsomfånget.
  • <service-credential-key-name> med namnet på nyckeln som innehåller klienthemligheten.
  • <directory-id>med katalog-ID:t (klientorganisation) för Azure Active Directory-programmet.
  • <container-name> med namnet på en container i ADLS Gen2-lagringskontot.
  • <storage-account-name> med namnet på ADLS Gen2-lagringskontot.
  • <mount-name> med namnet på den avsedda monteringspunkten i DBFS.