Share via


WASB ile Azure Blob Depolama Bağlan (eski)

Microsoft, Azure Blob Dosya Sistemi sürücüsü (ABFS) yerine Azure Blob Depolama için Windows Azure Depolama Blob sürücüsünü (WASB) kullanım dışı bırakmıştır; bkz. Azure Data Lake Storage 2. Nesil ve Blob Depolama için Bağlan. ABFS'nin WASB'ye göre çok sayıda avantajı vardır; ABFS'de Azure belgelerine bakın.

Bu makalede WASB sürücüsünü kullanan kodun bakımını yapmak için belgeler sağlanır. Databricks, Azure Blob Depolama tüm bağlantılar için ABFS kullanılmasını önerir.

Databricks'te WASB kimlik bilgilerini yapılandırma

WASB sürücüsü, depolama hesabı erişim anahtarı veya Paylaşılan Erişim İmzası (SAS) kullanmanıza olanak tanır. (Genel depolama hesabından veri okuyorsanız, kimlik bilgilerini yapılandırmanız gerekmez).

Databricks, Azure Databricks'te kimlik bilgilerini geçirmeniz gerektiğinde gizli dizileri kullanmanızı önerir. Gizli diziler, içeren gizli dizi kapsamına erişimi olan tüm kullanıcılar tarafından kullanılabilir.

Kimlik bilgilerini geçirebilirsiniz:

  • Spark yapılandırmasında kapsamı küme olarak belirlenmiş
  • Kapsamı not defteri olarak belirlenmiş
  • Bağlı dizine eklendi

Databricks, WASB ile benzer erişim desenleri sağlayan Azure Blob Depolama erişmek için tüm bağlantılarınızı ABFS kullanacak şekilde yükseltmenizi önerir. Azure Blob Depolama ile etkileşim kurarken en iyi güvenlik ve performans için ABFS kullanın.

Küme kimlik bilgilerini yapılandırmak için, kümeyi oluştururken Spark yapılandırma özelliklerini ayarlayın. Küme düzeyinde ayarlanan kimlik bilgileri, bu kümeye erişimi olan tüm kullanıcılar tarafından kullanılabilir.

Not defteri kapsamlı kimlik bilgilerini yapılandırmak için kullanın spark.conf.set(). Not defteri düzeyinde geçirilen kimlik bilgileri, bu not defterine erişimi olan tüm kullanıcılar tarafından kullanılabilir.

Depolama hesabı erişim anahtarıyla Azure Blob Depolama kimlik bilgilerini ayarlama

Depolama hesabı erişim anahtarı, depolama hesabı içindeki tüm kapsayıcılara tam erişim verir. Bu desen prototip oluşturma için yararlı olsa da, üretim verilerine sınırsız erişim vermeyle ilişkili riskleri azaltmak için üretimde kullanmaktan kaçının.

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

HESAP anahtarı URI'lerini ABFS kullanacak şekilde yükseltebilirsiniz. Daha fazla bilgi için bkz. Azure Data Lake Storage 2. Nesil’e ve Blob Depolama'ya bağlanma.

Paylaşılan Erişim İmzası (SAS) ile Azure Blob Depolama kimlik bilgilerini ayarlama

Belirli bir zamanda süresi dolan bir depolama hesabındaki tek bir kapsayıcıya sınırlı erişim yapılandırmak için SAS belirteçlerini kullanabilirsiniz.

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

DataFrame API'sini kullanarak erişim Azure Blob Depolama

Apache Spark DataFrame API'si, not defteri veya küme düzeyinde yapılandırılmış kimlik bilgilerini kullanabilir. Tüm WASB sürücü URI'leri kapsayıcı ve depolama hesabı adlarını belirtir. Dizin adı isteğe bağlıdır ve kapsayıcıya göre birden çok iç içe dizin belirtebilir.

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

Aşağıdaki kod örnekleri, kapsayıcı içindeki adlandırılmış bir dizinle etkileşim kurmak için DataFrames API'sini ve Databricks Utilities (dbutils) başvurusunu nasıl kullanabileceğinizi gösterir.

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

WASB yerine ABFS'yi güncelleştirmek için URI'lerinizi güncelleştirin. Daha fazla bilgi için bkz. Azure depolamaya erişme

SQL ile Azure Blob Depolama erişme

Bir not defterinin oturum yapılandırmasında ayarlanan kimlik bilgilerine Spark SQL çalıştıran not defterleri erişilemez.

Küme yapılandırmanızda bir hesap erişim anahtarı veya SAS ayarlandıktan sonra, standart Spark SQL sorgularını Azure Blob Depolama kullanabilirsiniz:

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

WASB yerine ABFS'yi güncelleştirmek için URI'lerinizi güncelleştirin; bkz. Azure depolamaya erişme

Azure Blob Depolama kapsayıcılarını DBFS'ye bağlama

DBFS'ye bir Azure Blob Depolama kapsayıcısını veya kapsayıcının içindeki bir klasörü bağlayabilirsiniz. Databricks önerileri için bkz . Azure Databricks'te bulut nesne depolamasını bağlama.

Önemli

  • Azure Blob depolama üç blob türünü destekler: blok, ekleme ve sayfa. DbFS'ye yalnızca blok blobları bağlayabilirsiniz.
  • Tüm kullanıcıların, DBFS'ye bağlanan Blob depolama kapsayıcılarındaki nesneler üzerinde okuma ve yazma erişimi vardır.
  • Bir küme aracılığıyla bir bağlama noktası oluşturulduktan sonra, bu kümenin kullanıcıları bağlama noktasına hemen erişebilir. Bağlama noktasını çalışan başka bir kümede kullanmak için, yeni oluşturulan bağlama noktasını kullanılabilir hale getirmek için bu çalışan kümede çalıştırmanız dbutils.fs.refreshMounts() gerekir.

DBFS, bağlı Blob depolama kapsayıcısına erişmek için bağlama noktasını oluştururken sağladığınız kimlik bilgilerini kullanır. Blob depolama kapsayıcısı bir depolama hesabı erişim anahtarı kullanılarak bağlanırsa, DBFS bu bağlama noktasına eriştiğinde depolama hesabı anahtarından türetilen geçici SAS belirteçlerini kullanır.

Azure Blob depolama kapsayıcısı bağlama

Databricks WASB yerine ABFS kullanılmasını önerir. ABFS ile bağlama hakkında daha fazla bilgi için bkz. ADLS 2. Nesil veya Blob Depolama ABFS ile bağlama.

  1. Bir Blob depolama kapsayıcısını veya bir klasörü kapsayıcının içine bağlamak için aşağıdaki komutu kullanın:

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

    burada:

    • <storage-account-name> , Azure Blob depolama hesabınızın adıdır.
    • <container-name> , Azure Blob depolama hesabınızdaki bir kapsayıcının adıdır.
    • <mount-name> , Blob depolama kapsayıcısının veya kapsayıcının içindeki bir klasörün (içinde sourcebelirtilen) DBFS'ye bağlanacağını temsil eden bir DBFS yoludur.
    • <conf-key>veya olabilir 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>")bir gizli dizi kapsamında gizlidizi olarak depolanan anahtarı alır.
  2. Kapsayıcınızdaki dosyalara yerel dosyalar gibi erişin, örneğin:

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