Sdílet prostřednictvím


Připojení do služby Azure Blob Storage pomocí WASB (starší verze)

Microsoft vyřadil ovladač objektů blob služby Windows Azure Storage (WASB) pro Azure Blob Storage ve prospěch ovladače systému souborů Azure Blob (ABFS), viz Připojení do Azure Data Lake Storage Gen2 a Blob Storage. ABFS má mnoho výhod oproti WASB; viz dokumentace k Azure týkající se ABFS.

Tento článek obsahuje dokumentaci k údržbě kódu, který používá ovladač WASB. Databricks doporučuje používat ABFS pro všechna připojení ke službě Azure Blob Storage.

Konfigurace přihlašovacích údajů WASB v Databricks

Ovladač WASB umožňuje použít přístupový klíč účtu úložiště nebo sdílený přístupový podpis (SAS). (Pokud čtete data z veřejného účtu úložiště, nemusíte konfigurovat přihlašovací údaje).

Databricks doporučuje používat tajné kódy vždy, když potřebujete předat přihlašovací údaje v Azure Databricks. Tajné kódy jsou dostupné všem uživatelům, kteří mají přístup k rozsahu tajných kódů.

Přihlašovací údaje můžete předat:

  • Obor na cluster v konfiguraci Sparku
  • Vymezený na poznámkový blok
  • Připojeno k připojenému adresáři

Databricks doporučuje upgradovat všechna vaše připojení tak, aby používala ABFS pro přístup ke službě Azure Blob Storage, která poskytuje podobné vzory přístupu jako WASB. Při interakci se službou Azure Blob Storage využijte ABFS k zajištění nejlepšího zabezpečení a výkonu.

Pokud chcete nakonfigurovat přihlašovací údaje clusteru, nastavte vlastnosti konfigurace Sparku při vytváření clusteru. Přihlašovací údaje nastavené na úrovni clusteru jsou k dispozici všem uživatelům s přístupem k danému clusteru.

Ke konfiguraci přihlašovacích údajů s vymezeným poznámkovým blokem použijte spark.conf.set(). Přihlašovací údaje předávané na úrovni poznámkového bloku jsou k dispozici všem uživatelům s přístupem k danému poznámkovému bloku.

Nastavení přihlašovacích údajů služby Azure Blob Storage pomocí přístupového klíče účtu úložiště

Přístupový klíč účtu úložiště uděluje úplný přístup ke všem kontejnerům v rámci účtu úložiště. I když je tento model užitečný pro vytváření prototypů, nepoužívejte ho v produkčním prostředí, abyste snížili rizika spojená s udělením neomezeného přístupu k produkčním datům.

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

Můžete upgradovat identifikátory URI klíčů účtu tak, aby používaly ABFS. Další informace najdete v tématu Připojení ke službě Azure Data Lake Storage Gen2 a Blob Storage.

Nastavení přihlašovacích údajů služby Azure Blob Storage pomocí sdíleného přístupového podpisu (SAS)

Pomocí tokenů SAS můžete nakonfigurovat omezený přístup k jednomu kontejneru v účtu úložiště, jehož platnost vyprší v určitém okamžiku.

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

Přístup ke službě Azure Blob Storage pomocí rozhraní DATAFrame API

Rozhraní API datového rámce Apache Sparku může používat přihlašovací údaje nakonfigurované na úrovni poznámkového bloku nebo clusteru. Všechny identifikátory URI ovladačů WASB určují názvy kontejnerů a účtů úložiště. Název adresáře je volitelný a může zadat více vnořených adresářů vzhledem k kontejneru.

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

Následující příklady kódu ukazují, jak můžete pomocí odkazu DataFrames API a Nástrojů Databricks (dbutils) interagovat s pojmenovaným adresářem v kontejneru.

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

Pokud chcete místo WASB aktualizovat ABFS, aktualizujte identifikátory URI. Další informace najdete v tématu Přístup ke službě Azure Storage

Přístup ke službě Azure Blob Storage pomocí SQL

Přihlašovací údaje nastavené v konfiguraci relace poznámkového bloku nejsou přístupné pro poznámkové bloky se Spark SQL.

Po nastavení přístupového klíče účtu nebo SAS v konfiguraci clusteru můžete použít standardní dotazy Spark SQL se službou Azure Blob Storage:

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

Chcete-li aktualizovat ABFS místo WASB, aktualizujte své identifikátory URI; Viz Přístup k úložišti Azure

Připojení kontejnerů Azure Blob Storage k DBFS

Ke službě DBFS můžete připojit kontejner služby Azure Blob Storage nebo složku uvnitř kontejneru. Doporučení pro Databricks najdete v tématu Připojení cloudového úložiště objektů v Azure Databricks.

Důležité

  • Azure Blob Storage podporuje tři typy objektů blob: blok, připojení a stránku. Objekty blob bloku můžete připojit pouze k DBFS.
  • Všichni uživatelé mají přístup ke čtení a zápisu objektů v kontejnerech úložiště objektů blob připojených k DBFS.
  • Po vytvoření přípojného bodu prostřednictvím clusteru můžou uživatelé tohoto clusteru okamžitě přistupovat k přípojovému bodu. Pokud chcete použít přípojný bod v jiném spuštěném clusteru, musíte na tomto spuštěném clusteru spustit dbutils.fs.refreshMounts() , aby byl nově vytvořený přípojný bod dostupný.

DBFS používá přihlašovací údaje, které zadáte při vytváření přípojného bodu pro přístup ke kontejneru připojeného úložiště objektů blob. Pokud je kontejner blob storage připojený pomocí přístupového klíče účtu úložiště, dbFS při přístupu k tomuto přípojovému bodu používá dočasné tokeny SAS odvozené z klíče účtu úložiště.

Připojení kontejneru úložiště objektů blob v Azure

Databricks doporučuje místo WASB používat ABFS. Další informace o připojení pomocí ABFS najdete v tématu: Připojení ADLS Gen2 nebo Blob Storage s ABFS.

  1. Pokud chcete připojit kontejner úložiště objektů blob nebo složku uvnitř kontejneru, použijte následující příkaz:

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

    kde

    • <storage-account-name> je název vašeho účtu služby Azure Blob Storage.
    • <container-name> je název kontejneru v účtu služby Azure Blob Storage.
    • <mount-name> je cesta DBFS, která představuje umístění kontejneru úložiště objektů blob nebo složky uvnitř kontejneru (zadaného v source) v DBFS.
    • <conf-key> může být buď fs.azure.account.key.<storage-account-name>.blob.core.windows.net nebo fs.azure.sas.<container-name>.<storage-account-name>.blob.core.windows.net
    • dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>")Získá klíč, který byl uložen jako tajný klíč v oboru tajného kódu.
  2. Přístup k souborům v kontejneru, jako by se jednalo o místní soubory, například:

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