Cloudobjectopslag koppelen aan Azure Databricks

Met Azure Databricks kunnen gebruikers cloudobjectopslag koppelen aan het Databricks File System (DBFS) om gegevenstoegangspatronen te vereenvoudigen voor gebruikers die niet bekend zijn met cloudconcepten. Gekoppelde gegevens werken niet met Unity Catalog en Databricks raadt u aan om niet te migreren met behulp van koppels en in plaats daarvan gegevensbeheer te beheren met Unity Catalog.

Hoe koppelt Azure Databricks cloudobjectopslag?

Azure Databricks-koppelingen maken een koppeling tussen een werkruimte en cloudobjectopslag, waarmee u kunt communiceren met cloudobjectopslag met behulp van vertrouwde bestandspaden ten opzichte van het Databricks-bestandssysteem. Koppels werken door een lokale alias te maken onder de /mnt map waarin de volgende informatie wordt opgeslagen:

  • Locatie van de opslag van cloudobjecten.
  • Stuurprogrammaspecificaties om verbinding te maken met het opslagaccount of de container.
  • Beveiligingsreferenties die zijn vereist voor toegang tot de gegevens.

Wat is de syntaxis voor het koppelen van opslag?

Hiermee source geeft u de URI van de objectopslag op (en kan eventueel beveiligingsreferenties coderen). Hiermee mount_point geeft u het lokale pad in de /mnt map op. Sommige objectopslagbronnen ondersteunen een optioneel encryption_type argument. Voor sommige toegangspatronen kunt u aanvullende configuratiespecificaties doorgeven als een woordenlijst aan extra_configs.

Notitie

Databricks raadt aan om koppelspecifieke Spark- en Hadoop-configuratie als opties in te stellen met behulp van extra_configs. Dit zorgt ervoor dat configuraties zijn gekoppeld aan de koppeling in plaats van het cluster of de sessie.

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

Neem contact op met uw werkruimte- en cloudbeheerders voordat u gegevenskoppelingen configureert of wijzigt, omdat een onjuiste configuratie onbeveiligde toegang kan bieden aan alle gebruikers in uw werkruimte.

Notitie

Naast de methoden die in dit artikel worden beschreven, kunt u het koppelen van een bucket automatiseren met de Databricks Terraform-provider en databricks_mount.

Een koppelpunt ontkoppelen

Als u een koppelpunt wilt ontkoppelen, gebruikt u de volgende opdracht:

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

Waarschuwing

Als u fouten wilt voorkomen, wijzigt u nooit een koppelpunt terwijl andere taken ernaar lezen of schrijven. Nadat u een koppeling hebt gewijzigd, moet u altijd worden uitgevoerd dbutils.fs.refreshMounts() op alle andere actieve clusters om eventuele koppelingsupdates door te geven. Zie de opdracht refreshMounts (dbutils.fs.refreshMounts).

ADLS Gen2 of Blob Storage koppelen met ABFS

U kunt gegevens koppelen in een Azure-opslagaccount met behulp van een Microsoft Entra ID (voorheen Azure Active Directory) toepassingsservice-principal voor verificatie. Zie Access Storage met behulp van een service-principal en Microsoft Entra ID (Azure Active Directory) voor meer informatie.

Belangrijk

  • Alle gebruikers in de Azure Databricks-werkruimte hebben toegang tot het gekoppelde ADLS Gen2-account. De service-principal die u gebruikt voor toegang tot het ADLS Gen2-account mag alleen toegang krijgen tot dat ADLS Gen2-account; deze mag geen toegang krijgen tot andere Azure-resources.
  • Wanneer u een koppelpunt maakt via een cluster, hebben clustergebruikers onmiddellijk toegang tot het koppelpunt. Als u het bevestigingspunt in een ander actief cluster wilt gebruiken, voert u dbutils.fs.refreshMounts() uit op dat actieve cluster om het nieuw gemaakte koppelpunt beschikbaar te maken voor gebruik.
  • Het ontkoppelen van een koppelpunt terwijl taken worden uitgevoerd, kan leiden tot fouten. Zorg ervoor dat productietaken de opslag niet ontkoppelen als onderdeel van de verwerking.
  • Koppelpunten die geheimen gebruiken, worden niet automatisch vernieuwd. Als gekoppelde opslag afhankelijk is van een geheim dat wordt gedraaid, verloopt of wordt verwijderd, kunnen er fouten optreden, zoals 401 Unauthorized. Als u een dergelijke fout wilt oplossen, moet u de opslag ontkoppelen en opnieuw koppelen.
  • Hiërarchische naamruimte (HNS) moet zijn ingeschakeld om een Azure Data Lake Storage Gen2-opslagaccount te koppelen met behulp van het ABFS-eindpunt.

Voer het volgende uit in uw notebook om een koppelpunt te verifiëren en te maken.

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> met de toepassings-id (client) voor de Azure Active Directory-toepassing.
  • <scope-name> met de naam van het geheime bereik van Databricks.
  • <service-credential-key-name> met de naam van de sleutel die het clientgeheim bevat.
  • <directory-id> met de directory-id (tenant) voor de Azure Active Directory-toepassing.
  • <container-name> met de naam van een container in het ADLS Gen2-opslagaccount.
  • <storage-account-name> met de naam van het ADLS Gen2-opslagaccount.
  • <mount-name> met de naam van het beoogde koppelpunt in DBFS.