Udostępnij za pośrednictwem


Połączenie do usługi Azure Blob Storage z usługą WASB (starsza wersja)

Firma Microsoft wycofała sterownik obiektów blob usługi Azure Storage (WASB) dla usługi Azure Blob Storage na rzecz sterownika systemu plików obiektów blob platformy Azure (ABFS); zobacz Nawiązywanie połączenia z usługą Azure Data Lake Storage Gen2 i usługą Blob Storage. ABFS ma wiele korzyści w przypadku WASB; zobacz dokumentację platformy Azure dotyczącą systemu ABFS.

Ten artykuł zawiera dokumentację dotyczącą obsługi kodu korzystającego ze sterownika WASB. Databricks zaleca używanie ABFS dla wszystkich connections do Azure Blob Storage.

Skonfiguruj WASB credentials w usłudze Databricks

Sterownik WASB umożliwia użycie klucza dostępu do konta magazynu lub sygnatury dostępu współdzielonego (SAS). (Jeśli odczytujesz dane z konta magazynu publicznego, nie musisz konfigurować credentials).

Usługa Databricks zaleca używanie tajemnic zawsze, gdy musisz przekazać credentials w Azure Databricks. Wpisy tajne są dostępne dla wszystkich użytkowników z dostępem do zakresu zawierającego wpis tajny.

Możesz przekazać credentials:

  • Zakres klastra w konfiguracji platformy Spark
  • Zakres do notesu
  • Dołączone do zainstalowanego katalogu

Databricks zaleca zaktualizowanie wszystkich connections do , aby używać ABFS do uzyskiwania dostępu do Azure Blob Storage, co zapewnia podobne wzorce dostępu jak WASB. Użyj usługi ABFS, aby uzyskać najlepsze zabezpieczenia i wydajność podczas interakcji z usługą Azure Blob Storage.

Aby skonfigurować właściwości konfiguracji platformy Spark credentials, setorazpodczas tworzenia klastra. Credentials set na poziomie klastra są dostępne dla wszystkich użytkowników z dostępem do tego klastra.

Aby skonfigurować zakres notesu credentials, użyj spark.conf.set(). Credentials przekazywane na poziomie notatnika są dostępne dla wszystkich użytkowników mających dostęp do tego notatnika.

Konfiguracja credentials usługi Azure Blob Storage przy użyciu klucza dostępu do konta magazynu

Klucz dostępu do konta magazynu udziela pełnego dostępu do wszystkich kontenerów w ramach konta magazynu. Chociaż ten wzorzec jest przydatny do tworzenia prototypów, należy unikać używania go w środowisku produkcyjnym w celu zmniejszenia ryzyka związanego z udzielaniem nieograniczonego dostępu do danych produkcyjnych.

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

Możesz uaktualnić identyfikatory URI klucza konta, aby używać systemu ABFS. Aby uzyskać więcej informacji, zobacz tematNawiązywanie połączenia z Azure Data Lake Storage Gen2 i usługą Blob Storage.

Konfigurowanie Azure Blob Storage credentials przy użyciu sygnatury dostępu współdzielonego (SAS)

Za pomocą tokenów SAS można skonfigurować ograniczony dostęp do pojedynczego kontenera na koncie magazynu, które wygasa w określonym czasie.

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

Uzyskiwanie dostępu do usługi Azure Blob Storage przy użyciu interfejsu API ramki danych

Interfejs API Apache Spark DataFrame może być używany z konfiguracją credentials na poziomie notatnika lub klastra. Wszystkie identyfikatory URI sterowników WASB określają nazwy kontenerów i kont magazynu. Nazwa katalogu jest opcjonalna i może określać wiele katalogów zagnieżdżonych względem kontenera.

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

W poniższych przykładach kodu pokazano, jak korzystać z odwołań interfejsu API ramek danych i narzędzi usługi Databricks (dbutils) w celu interakcji z nazwanym katalogiem w kontenerze.

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

Aby update ABFS zamiast WASB, update identyfikatory URI. Aby uzyskać więcej informacji, zobacz Access Azure Storage (Uzyskiwanie dostępu do usługi Azure Storage)

Uzyskiwanie dostępu do usługi Azure Blob Storage za pomocą usługi SQL

Credentials set w konfiguracji sesji notatnika nie są dostępne dla notatników korzystających z Spark SQL.

Gdy klucz dostępu do konta lub sygnatura dostępu współdzielonego jest set w konfiguracji klastra, można używać standardowych zapytań Spark SQL z usługą Azure Blob Storage.

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

Aby update ABFS zamiast WASB, update identyfikatory URI; zobacz Access Azure Storage

Instalowanie kontenerów usługi Azure Blob Storage w systemie plików DBFS

Kontener usługi Azure Blob Storage lub folder można zainstalować w kontenerze do systemu plików DBFS. Aby uzyskać zalecenia dotyczące usługi Databricks, zobacz Instalowanie magazynu obiektów w chmurze w usłudze Azure Databricks.

Ważne

  • Usługa Azure Blob Storage obsługuje trzy typy obiektów blob: blokowe, dołączane i stronicowe. Blokowe obiekty blob można instalować tylko w systemie plików DBFS.
  • Do obiektów w kontenerach usługi Blob Storage zainstalowanych w systemie plików DBFS mają dostęp do odczytu i zapisu wszyscy użytkownicy.
  • Po utworzeniu punktu instalacji za pośrednictwem klastra użytkownicy tego klastra mogą natychmiast uzyskać dostęp do punktu instalacji. Aby użyć punktu instalacji w innym uruchomionym klastrze, należy uruchomić dbutils.fs.refreshMounts() go w tym uruchomionym klastrze, aby udostępnić nowo utworzony punkt instalacji.

System plików DBFS używa poświadczenia podanego podczas tworzenia punktu instalacji w celu uzyskania dostępu do zainstalowanego kontenera usługi Blob Storage. Jeśli kontener usługi Blob Storage jest instalowany przy użyciu klucza dostępu do konta magazynu, system plików DBFS używa tymczasowych tokenów SAS pochodzących z klucza konta magazynu podczas uzyskiwania dostępu do tego punktu instalacji.

Instalowanie kontenera usługi Azure Blob Storage

Usługa Databricks zaleca używanie systemu ABFS zamiast WASB. Aby uzyskać więcej informacji na temat instalowania za pomocą systemu ABFS, zobacz: Instalowanie usługi ADLS Gen2 lub usługi Blob Storage przy użyciu systemu ABFS.

  1. Aby zainstalować kontener usługi Blob Storage lub folder wewnątrz kontenera, użyj następującego polecenia:

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

    where

    • <storage-account-name> to nazwa konta usługi Azure Blob Storage.
    • <container-name> to nazwa kontenera na koncie usługi Azure Blob Storage.
    • <mount-name> to ścieżka systemu plików DBFS reprezentująca where kontenera usługi Blob Storage lub folderu wewnątrz kontenera (określonego w source) zostanie zainstalowany w systemie plików DBFS.
    • <conf-key>może być albo albo fs.azure.account.key.<storage-account-name>.blob.core.windows.netfs.azure.sas.<container-name>.<storage-account-name>.blob.core.windows.net
    • dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>")Pobiera klucz, który został zapisany jako wpis tajny w zakresie wpisu tajnego.
  2. Uzyskiwanie dostępu do plików w kontenerze tak, jakby były plikami lokalnymi, na przykład:

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