Share via


Csatlakozás az Azure Blob Storage-ba a WASB-vel (örökölt)

A Microsoft az Azure Blob Storage-hoz készült Windows Azure Storage Blob-illesztőprogramot (WASB) az Azure Blob Fájlrendszer-illesztőprogram (ABFS) javára elavulta; lásd az Azure Data Lake Storage Gen2 és Blob Storage Csatlakozás. Az ABFS számos előnnyel rendelkezik a WASB-vel szemben; lásd az Azure ABFS-ről szóló dokumentációját.

Ez a cikk dokumentációt tartalmaz a WASB-illesztőprogramot használó kód karbantartásához. A Databricks az ABFS használatát javasolja az Azure Blob Storage-hoz való összes kapcsolathoz.

WASB-hitelesítő adatok konfigurálása a Databricksben

A WASB-illesztő lehetővé teszi a tárfiók hozzáférési kulcsának vagy a közös hozzáférésű jogosultságkód (SAS) használatát. (Ha nyilvános tárfiókból olvas adatokat, nem kell hitelesítő adatokat konfigurálnia).

A Databricks azt javasolja, hogy titkos kulcsokat használjon, amikor hitelesítő adatokat kell átadnia az Azure Databricksben. A titkos kulcsok minden olyan felhasználó számára elérhetők, aki hozzáfér a titkos kulcs hatóköréhez.

Hitelesítő adatokat ad át:

  • Hatókör a Fürtre a Spark-konfigurációban
  • Hatókör a jegyzetfüzetre
  • Csatlakoztatott könyvtárhoz csatolva

A Databricks azt javasolja, hogy frissítse az összes kapcsolatot, hogy az ABFS-t használva hozzáférjen az Azure Blob Storage-hoz, amely hasonló hozzáférési mintákat biztosít, mint a WASB. Használja az ABFS-t a legjobb biztonság és teljesítmény érdekében az Azure Blob Storage használatakor.

A fürt hitelesítő adatainak konfigurálásához állítsa be a Spark konfigurációs tulajdonságait a fürt létrehozásakor. A fürt szintjén beállított hitelesítő adatok az adott fürthöz hozzáféréssel rendelkező összes felhasználó számára elérhetők.

A jegyzetfüzet hatókörű hitelesítő adatainak konfigurálásához használja spark.conf.set()a következőt: . A jegyzetfüzet szintjén átadott hitelesítő adatok az adott jegyzetfüzethez hozzáféréssel rendelkező összes felhasználó számára elérhetők.

Az Azure Blob Storage hitelesítő adatainak beállítása tárfiók hozzáférési kulcsával

A tárfiók hozzáférési kulcsa teljes hozzáférést biztosít a tárfiókon belüli összes tárolóhoz. Bár ez a minta hasznos a prototípus-készítéshez, ne használja éles környezetben, hogy csökkentse az éles adatokhoz való korlátlan hozzáférés biztosításával járó kockázatokat.

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

A fiókkulcs URI-jait frissítheti az ABFS használatára. For more information, see Connect to Azure Data Lake Storage Gen2 and Blob Storage.

Az Azure Blob Storage hitelesítő adatainak beállítása közös hozzáférésű jogosultságkóddal (SAS)

SAS-jogkivonatokkal korlátozott hozzáférést konfigurálhat egyetlen tárolóhoz egy adott időpontban lejáró tárfiókban.

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

Az Azure Blob Storage elérése a DataFrame API használatával

Az Apache Spark DataFrame API a jegyzetfüzet vagy a fürt szintjén konfigurált hitelesítő adatokat használhatja. Minden WASB-illesztő URI megadja a tároló és a tárfiók nevét. A címtár neve nem kötelező, és a tárolóhoz képest több beágyazott könyvtárat is megadhat.

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

Az alábbi példakódok bemutatják, hogyan használhatja a DataFrames API-t és a Databricks Utilities (dbutils) hivatkozást egy tároló nevesített könyvtárával való interakcióhoz.

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

Ha a WASB helyett az ABFS-t szeretné frissíteni, frissítse az URI-kat. További információ: Access Azure Storage

Az Azure Blob Storage elérése SQL-lel

A jegyzetfüzet munkamenet-konfigurációjában beállított hitelesítő adatok nem érhetők el a Spark SQL-t futtató jegyzetfüzetek számára.

Miután beállított egy fiókelérési kulcsot vagy SAS-t a fürtkonfigurációban, standard Spark SQL-lekérdezéseket használhat az Azure Blob Storage-nal:

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

Ha a WASB helyett az ABFS-t szeretné frissíteni, frissítse az URI-kat; lásd: Access Azure Storage

Azure Blob Storage-tárolók csatlakoztatása a DBFS-hez

Egy Azure Blob Storage-tárolót vagy egy tárolón belüli mappát csatlakoztathat a DBFS-hez. A Databricks-javaslatokért lásd : Felhőobjektum-tároló csatlakoztatása az Azure Databrickshez.

Fontos

  • Az Azure Blob Storage három blobtípust támogat: blokk, hozzáfűzés és oldal. Blokkblobokat csak a DBFS-hez csatlakoztathat.
  • All users have read and write access to the objects in Blob storage containers mounted to DBFS.
  • Miután létrehozott egy csatlakoztatási pontot egy fürtön keresztül, a fürt felhasználói azonnal hozzáférhetnek a csatlakoztatási ponthoz. Ha egy másik futó fürtben szeretné használni a csatlakoztatási pontot, az újonnan létrehozott csatlakoztatási pont elérhetővé tétele érdekében a futó fürtön kell futtatnia dbutils.fs.refreshMounts() .

A DBFS a csatlakoztatási pont létrehozásakor megadott hitelesítő adatokat használja a csatlakoztatott Blob Storage-tároló eléréséhez. Ha egy Blob Storage-tároló egy tárfiók hozzáférési kulcsával van csatlakoztatva, a DBFS ideiglenes SAS-jogkivonatokat használ, amelyek a tárfiókkulcsból származnak, amikor hozzáfér ehhez a csatlakoztatási ponthoz.

Azure Blob Storage-tároló csatlakoztatása

A Databricks a WASB helyett az ABFS használatát javasolja. További információ az ABFS-sel való csatlakoztatásról: ADLS Gen2 vagy Blob Storage csatlakoztatása ABFS-sel.

  1. Blob Storage-tároló vagy mappa tárolón belüli csatlakoztatásához használja a következő parancsot:

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

    ebben:

    • <storage-account-name> Az Azure Blob Storage-fiók neve.
    • <container-name> Egy tároló neve az Azure Blob Storage-fiókban.
    • <mount-name> EGY DBFS-elérési út, amely azt jelzi, hogy a Blob Storage-tároló vagy a tárolón belüli (a megadott source) mappa hol lesz csatlakoztatva a DBFS-ben.
    • <conf-key>lehet vagy 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>")lekéri a titkos kulcsként egy titkos hatókörben tárolt kulcsot.
  2. A tárolóban lévő fájlokat úgy érheti el, mintha helyi fájlok lennének, például:

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