Share via


Verbinding maken naar Azure Blob Storage met WASB (verouderd)

Microsoft heeft het Windows Azure Storage Blob-stuurprogramma (WASB) voor Azure Blob Storage afgeschaft ten gunste van het stuurprogramma azure Blob Filesystem (ABFS). Zie Verbinding maken naar Azure Data Lake Storage Gen2 en Blob Storage. ABFS heeft talloze voordelen ten opzichte van WASB; raadpleeg de Azure-documentatie over ABFS.

Dit artikel bevat documentatie voor het onderhouden van code die gebruikmaakt van het WASB-stuurprogramma. Databricks raadt het gebruik van ABFS aan voor alle verbindingen met Azure Blob Storage.

WASB-referenties configureren in Databricks

Met het WASB-stuurprogramma kunt u een toegangssleutel voor een opslagaccount of een Shared Access Signature (SAS) gebruiken. (Als u gegevens leest uit een openbaar opslagaccount, hoeft u geen referenties te configureren).

Databricks raadt het gebruik van geheimen aan wanneer u referenties moet doorgeven in Azure Databricks. Geheimen zijn beschikbaar voor alle gebruikers met toegang tot het geheime bereik.

U kunt referenties doorgeven:

  • Gericht op het cluster in de Spark-configuratie
  • Scoped op het notebook
  • Gekoppeld aan een gekoppelde map

Databricks raadt aan om al uw verbindingen te upgraden om ABFS te gebruiken voor toegang tot Azure Blob Storage. Dit biedt vergelijkbare toegangspatronen als WASB. Gebruik ABFS voor de beste beveiliging en prestaties bij interactie met Azure Blob Storage.

Als u clusterreferenties wilt configureren, stelt u Spark-configuratie-eigenschappen in wanneer u het cluster maakt. Referenties die zijn ingesteld op clusterniveau, zijn beschikbaar voor alle gebruikers met toegang tot dat cluster.

Als u referenties voor notebookbereik wilt configureren, gebruikt u spark.conf.set(). Referenties die op notitieblokniveau zijn doorgegeven, zijn beschikbaar voor alle gebruikers met toegang tot dat notitieblok.

Azure Blob Storage-referenties instellen met een toegangssleutel voor een opslagaccount

Een toegangssleutel voor een opslagaccount verleent volledige toegang tot alle containers binnen een opslagaccount. Hoewel dit patroon nuttig is voor het maken van prototypen, vermijdt u het gebruik ervan in productie om de risico's te verminderen die verband houden met het verlenen van onbeperkte toegang tot productiegegevens.

spark.conf.set(
  "fs.azure.account.key.<storage-account-name>.blob.core.windows.net",
  "<storage-account-access-key>"
)

U kunt accountsleutel-URI's upgraden om ABFS te gebruiken. Raadpleeg Verbinding maken met Azure Data Lake Storage Gen2 en Blob Storage voor meer informatie.

Azure Blob Storage-referenties instellen met een Shared Access Signature (SAS)

U kunt SAS-tokens gebruiken om beperkte toegang tot één container in een opslagaccount te configureren dat op een bepaald tijdstip verloopt.

spark.conf.set(
  "fs.azure.sas.<container-name>.<storage-account-name>.blob.core.windows.net",
  "<sas-token-for-container>"
)

Toegang tot Azure Blob Storage met behulp van de DataFrame-API

De Apache Spark DataFrame-API kan referenties gebruiken die zijn geconfigureerd op notebook- of clusterniveau. Alle WASB-stuurprogramma-URI's geven de namen van de container- en opslagaccounts op. De mapnaam is optioneel en kan meerdere geneste mappen opgeven ten opzichte van de container.

wasbs://<container-name>@<storage-account-name>.blob.core.windows.net/<directory-name>

In de volgende codevoorbeelden ziet u hoe u de dataframes-API en de Databricks Utilities-verwijzing (dbutils) kunt gebruiken om te communiceren met een benoemde map in een container.

df = spark.read.format("parquet").load("wasbs://<container-name>@<storage-account-name>.blob.core.windows.net/<directory-name>")

dbutils.fs.ls("wasbs://<container-name>@<storage-account-name>.blob.core.windows.net/<directory-name>")

Als u ABFS wilt bijwerken in plaats van WASB, werkt u uw URI's bij. Zie Toegang tot Azure Storage voor meer informatie

Toegang tot Azure Blob Storage met SQL

Referenties die zijn ingesteld in de sessieconfiguratie van een notebook, zijn niet toegankelijk voor notebooks met Spark SQL.

Nadat een toegangssleutel voor een account of een SAS is ingesteld in uw clusterconfiguratie, kunt u standaard Spark SQL-query's gebruiken met Azure Blob Storage:

-- SQL
CREATE DATABASE <db-name>
LOCATION "wasbs://<container-name>@<storage-account-name>.blob.core.windows.net/";

Als u ABFS wilt bijwerken in plaats van WASB, werkt u uw URI's bij; Zie Toegang tot Azure Storage

Azure Blob Storage-containers koppelen aan DBFS

U kunt een Azure Blob Storage-container of een map in een container koppelen aan DBFS. Zie Koppelen van cloudobjectopslag in Azure Databricks voor aanbevelingen voor Databricks.

Belangrijk

  • Azure Blob Storage ondersteunt drie blobtypen: blok, toevoeg en pagina. U kunt blok-blobs alleen koppelen aan DBFS.
  • Alle gebruikers hebben lees- en schrijftoegang tot deze objecten in Blob Storage-containers die zijn gekoppeld met DBFS.
  • Nadat een koppelpunt is gemaakt via een cluster, hebben gebruikers van dat cluster onmiddellijk toegang tot het koppelpunt. Als u het koppelpunt in een ander actief cluster wilt gebruiken, moet dbutils.fs.refreshMounts() u uitvoeren op dat actieve cluster om het zojuist gemaakte koppelpunt beschikbaar te maken.

DBFS gebruikt de referentie die u opgeeft wanneer u het koppelpunt maakt voor toegang tot de gekoppelde Blob Storage-container. Als een Blob Storage-container is gekoppeld met behulp van een toegangssleutel voor een opslagaccount, gebruikt DBFS tijdelijke SAS-tokens die zijn afgeleid van de sleutel van het opslagaccount wanneer deze toegang heeft tot dit koppelpunt.

Een Azure Blob Storage-container koppelen

Databricks raadt aan om ABFS te gebruiken in plaats van WASB. Zie voor meer informatie over koppelen met ABFS: ADLS Gen2 of Blob Storage koppelen met ABFS.

  1. Gebruik de volgende opdracht om een Blob Storage-container of een map in een container te koppelen:

    Python

    dbutils.fs.mount(
      source = "wasbs://<container-name>@<storage-account-name>.blob.core.windows.net",
      mount_point = "/mnt/<mount-name>",
      extra_configs = {"<conf-key>":dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>")})
    

    Scala

    dbutils.fs.mount(
      source = "wasbs://<container-name>@<storage-account-name>.blob.core.windows.net/<directory-name>",
      mountPoint = "/mnt/<mount-name>",
      extraConfigs = Map("<conf-key>" -> dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>")))
    

    waar

    • <storage-account-name> is de naam van uw Azure Blob Storage-account.
    • <container-name> is de naam van een container in uw Azure Blob Storage-account.
    • <mount-name> is een DBFS-pad dat aangeeft waar de Blob Storage-container of een map in de container (opgegeven in source) wordt gekoppeld in DBFS.
    • <conf-key> kan een van fs.azure.account.key.<storage-account-name>.blob.core.windows.net beide zijn of fs.azure.sas.<container-name>.<storage-account-name>.blob.core.windows.net
    • dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>")haalt de sleutel op die is opgeslagen als een geheim in een geheim bereik.
  2. Open bestanden in uw container alsof het lokale bestanden zijn, bijvoorbeeld:

    Python

    # python
    df = spark.read.format("text").load("/mnt/<mount-name>/...")
    df = spark.read.format("text").load("dbfs:/<mount-name>/...")
    

    Scala

    // scala
    val df = spark.read.format("text").load("/mnt/<mount-name>/...")
    val df = spark.read.format("text").load("dbfs:/<mount-name>/...")
    

    SQL

    -- SQL
    CREATE DATABASE <db-name>
    LOCATION "/mnt/<mount-name>"