Anslut till Azure Blob Storage med WASB (äldre)

Microsoft har föråldrat Windows Azure Storage Blob-drivrutinen (WASB) för Azure Blob Storage till förmån för Azure Blob Filesystem-drivrutinen (ABFS), se Anslut till Azure Data Lake Storage Gen2 och Blob Storage. ABFS har många fördelar jämfört med WASB; Se Azure-dokumentationen om ABFS.

Den här artikeln innehåller dokumentation för att underhålla kod som använder WASB-drivrutinen. Databricks rekommenderar att du använder ABFS för alla anslutningar till Azure Blob Storage.

Konfigurera WASB-autentiseringsuppgifter i Databricks

Med WASB-drivrutinen kan du använda antingen en åtkomstnyckel för lagringskonto eller en signatur för delad åtkomst (SAS). (Om du läser data från ett offentligt lagringskonto behöver du inte konfigurera autentiseringsuppgifter).

Databricks rekommenderar att du använder hemligheter när du behöver skicka autentiseringsuppgifter i Azure Databricks. Hemligheter är tillgängliga för alla användare med åtkomst till det innehållande hemliga omfånget.

Du kan skicka autentiseringsuppgifter:

  • Begränsad till klustret i Spark-konfigurationen
  • Begränsad till notebook-filen
  • Ansluten till en monterad katalog

Databricks rekommenderar att du uppgraderar alla dina anslutningar till att använda ABFS för att få åtkomst till Azure Blob Storage, vilket ger liknande åtkomstmönster som WASB. Använd ABFS för bästa säkerhet och prestanda när du interagerar med Azure Blob Storage.

Konfigurera klusterautentiseringsuppgifter genom att ange Spark-konfigurationsegenskaper när du skapar klustret. Autentiseringsuppgifter som anges på klusternivå är tillgängliga för alla användare med åtkomst till klustret.

Om du vill konfigurera autentiseringsuppgifter med notebook-omfång använder du spark.conf.set(). Autentiseringsuppgifter som skickas på notebook-nivå är tillgängliga för alla användare med åtkomst till anteckningsboken.

Ange autentiseringsuppgifter för Azure Blob Storage med en åtkomstnyckel för lagringskonto

En åtkomstnyckel för lagringskonto ger fullständig åtkomst till alla containrar i ett lagringskonto. Även om det här mönstret är användbart för prototyper bör du undvika att använda det i produktion för att minska riskerna med att bevilja obegränsad åtkomst till produktionsdata.

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

Du kan uppgradera kontonyckel-URI:er för att använda ABFS. Mer information finns i Ansluta till Azure Data Lake Storage Gen2 och Blob Storage.

Ange autentiseringsuppgifter för Azure Blob Storage med en signatur för delad åtkomst (SAS)

Du kan använda SAS-token för att konfigurera begränsad åtkomst till en enda container i ett lagringskonto som upphör att gälla vid en viss tidpunkt.

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

Få åtkomst till Azure Blob Storage med hjälp av DataFrame-API:et

Apache Spark DataFrame-API:et kan använda autentiseringsuppgifter som konfigurerats på notebook- eller klusternivå. Alla WASB-drivrutins-URI:er anger container- och lagringskontonamnen. Katalognamnet är valfritt och kan ange flera kapslade kataloger i förhållande till containern.

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

Följande kodexempel visar hur du kan använda referensen DataFrames API och Databricks Utilities (dbutils) för att interagera med en namngiven katalog i en 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>")

Uppdatera dina URI:er för att uppdatera ABFS i stället för WASB. Mer information finns i Åtkomst till Azure Storage

Få åtkomst till Azure Blob Storage med SQL

Autentiseringsuppgifter som anges i sessionskonfigurationen för en notebook-fil är inte tillgängliga för notebook-filer som kör Spark SQL.

När en kontoåtkomstnyckel eller en SAS har konfigurerats i klusterkonfigurationen kan du använda vanliga Spark SQL-frågor med Azure Blob Storage:

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

Uppdatera dina URI:er för att uppdatera ABFS i stället för WASB. se Åtkomst till Azure Storage

Montera Azure Blob Storage-containrar till DBFS

Du kan montera en Azure Blob Storage-container eller en mapp i en container till DBFS. Databricks-rekommendationer finns i Montera molnobjektlagring på Azure Databricks.

Viktigt!

  • Azure Blob Storage har stöd för tre blobtyper: block, tillägg och sida. Du kan bara montera blockblobar till DBFS.
  • Alla användare har läs- och skrivåtkomst till objekten i de Blob Storage-containrar som monterats i DBFS.
  • När en monteringspunkt har skapats via ett kluster kan användare av klustret omedelbart komma åt monteringspunkten. Om du vill använda monteringspunkten i ett annat kluster som körs måste du köra dbutils.fs.refreshMounts() på det kluster som körs för att göra den nya monteringspunkten tillgänglig.

DBFS använder de autentiseringsuppgifter som du anger när du skapar monteringspunkten för att komma åt den monterade Blob Storage-containern. Om en Blob Storage-container monteras med en åtkomstnyckel för lagringskontot använder DBFS tillfälliga SAS-token som härletts från lagringskontonyckeln när den kommer åt den här monteringspunkten.

Montera en Azure Blob Storage-container

Databricks rekommenderar att du använder ABFS i stället för WASB. Mer information om montering med ABFS finns i: Montera ADLS Gen2 eller Blob Storage med ABFS.

  1. Om du vill montera en Blob Storage-container eller en mapp i en container använder du följande kommando:

    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>")))
    

    där

    • <storage-account-name> är namnet på ditt Azure Blob Storage-konto.
    • <container-name> är namnet på en container i ditt Azure Blob Storage-konto.
    • <mount-name> är en DBFS-sökväg som representerar var Blob Storage-containern eller en mapp i containern (anges i source) kommer att monteras i DBFS.
    • <conf-key> kan vara antingen fs.azure.account.key.<storage-account-name>.blob.core.windows.net eller fs.azure.sas.<container-name>.<storage-account-name>.blob.core.windows.net
    • dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>") hämtar nyckeln som har lagrats som en hemlighet i ett hemligt omfång.
  2. Få åtkomst till filer i containern som om de vore lokala filer, till exempel:

    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>"