Share via


Öğretici: Databricks kullanarak kapsayıcı istatistiklerini hesaplama

Bu öğreticide, Azure Databricks ile birlikte Azure Blob Depolama envanteri kullanarak kapsayıcılarınızla ilgili istatistikleri toplama adımları gösterilmektedir.

Bu öğreticide şunların nasıl yapıldığını öğreneceksiniz:

  • Stok raporu oluşturma
  • Azure Databricks çalışma alanı, kümesi ve not defteri oluşturma
  • Blob envanter dosyasını okuma
  • Blobların, anlık görüntülerin ve sürümlerin sayısını ve toplam boyutunu alma
  • Blob türüne ve içerik türüne göre blob sayısını alma

Önkoşullar

Stok raporu oluşturma

Depolama hesabınız için blob envanter raporlarını etkinleştirin. Bkz. Azure Depolama blob envanter raporlarını etkinleştirme.

Aşağıdaki yapılandırma ayarlarını kullanın:

Ayar Değer
Kural adı blobinventory
Kapsayıcı <kapsayıcınızın adı>
Envantere nesne türü Blob
Blob türleri Blok blobları, Sayfa blobları ve Ekleme blobları
Alt blob sürümlerini dahil edin, anlık görüntüleri dahil edin, silinen blobları dahil edin
Blob envanter alanları Tümü
Stok sıklığı Günlük
Dışarı aktarma biçimi CSV

İlk raporunuzun oluşturulması için envanter raporlarını etkinleştirdikten sonra 24 saate kadar beklemeniz gerekebilir.

Azure Databricks'i yapılandırma

Bu bölümde bir Azure Databricks çalışma alanı, kümesi ve not defteri oluşturacaksınız. Bu öğreticinin ilerleyen bölümlerinde kod parçacıklarını not defteri hücrelerine yapıştıracak ve sonra bunları çalıştırarak kapsayıcı istatistiklerini toplayacaksınız.

  1. Azure Databricks çalışma alanı oluşturun. Bkz. Azure Databricks çalışma alanı oluşturma.

  2. Küme oluşturma. Bkz. Küme oluşturma.

  3. Not defteri oluşturun ve not defterinin varsayılan dili olarak Python'ı seçin. Bkz. Not defteri oluşturma.

Blob envanter dosyasını okuma

  1. Aşağıdaki kod bloğunu kopyalayıp ilk hücreye yapıştırın, ancak bu kodu henüz çalıştırmayın.

    from pyspark.sql.types import StructType, StructField, IntegerType, StringType
    import pyspark.sql.functions as F  
       storage_account_name = "<storage-account-name>"
       storage_account_key = "<storage-account-key>"
       container = "<container-name>"
       blob_inventory_file = "<blob-inventory-file-name>" 
       hierarchial_namespace_enabled = False
    
    if hierarchial_namespace_enabled == False:
      spark.conf.set("fs.azure.account.key.{0}.blob.core.windows.net".format(storage_account_name), storage_account_key)
      df = spark.read.csv("wasbs://{0}@{1}.blob.core.windows.net/{2}".format(container, storage_account_name, blob_inventory_file), header='true', inferSchema='true')
    
     else:
      spark.conf.set("fs.azure.account.key.{0}.dfs.core.windows.net".format(storage_account_name), storage_account_key)
      df = spark.read.csv("abfss://{0}@{1}.dfs.core.windows.net/{2}".format(container, storage_account_name, blob_inventory_file), header='true', inferSchema='true')     
    
  2. Bu kod bloğunda aşağıdaki değerleri değiştirin:

    • <storage-account-name> Yer tutucu değerini depolama hesabınızın adıyla değiştirin.

    • <storage-account-key> Yer tutucu değerini depolama hesabınızın hesap anahtarıyla değiştirin.

    • <container-name> Yer tutucu değerini envanter raporlarını tutan kapsayıcıyla değiştirin.

    • Yer tutucuyu <blob-inventory-file-name> stok dosyasının tam adıyla değiştirin (Örneğin: 2023/02/02/02-16-17/blobinventory/blobinventory_1000000_0.csv).

    • Hesabınızın hiyerarşik ad alanı varsa değişkenini hierarchical_namespace_enabled olarak Trueayarlayın.

  3. Kodu bu blokta çalıştırmak için SHIFT + ENTER tuşlarına basın.

Blob sayısını ve boyutunu alma

  1. Yeni bir hücreye aşağıdaki kodu yapıştırın:

    print("Number of blobs in the container:", df.count())
    print("Number of bytes occupied by blobs in the container:", df.agg({'Content-Length': 'sum'}).first()['sum(Content-Length)'])
    
  2. Hücreyi çalıştırmak için SHIFT + ENTER tuşlarına basın.

    Not defteri bir kapsayıcıdaki blob sayısını ve kapsayıcıdaki blobların kapladığı bayt sayısını görüntüler.

    Kapsayıcıdaki blob sayısını ve blobların boyutunu gösteren hücreyi çalıştırdığınızda görüntülenen sonuçların ekran görüntüsü.

Anlık görüntü sayısını ve boyutunu alma

  1. Yeni bir hücreye aşağıdaki kodu yapıştırın:

    from pyspark.sql.functions import *
    
    print("Number of snapshots in the container:", df.where(~(col("Snapshot")).like("Null")).count())
    dfT = df.where(~(col("Snapshot")).like("Null"))
    print("Number of bytes occupied by snapshots in the container:", dfT.agg({'Content-Length': 'sum'}).first()['sum(Content-Length)'])
    
  2. Hücreyi çalıştırmak için SHIFT + ENTER tuşlarına basın.

    Not defteri, anlık görüntü sayısını ve blob anlık görüntüleri tarafından kaplanan toplam bayt sayısını görüntüler.

    Anlık görüntü sayısını ve anlık görüntülerin toplam birleşik boyutunu gösteren hücreyi çalıştırdığınızda görüntülenen sonuçların ekran görüntüsü.

Sürüm sayısını ve boyutunu alma

  1. Yeni bir hücreye aşağıdaki kodu yapıştırın:

    from pyspark.sql.functions import *
    
    print("Number of versions in the container:", df.where(~(col("VersionId")).like("Null")).count())
    dfT = df.where(~(col("VersionId")).like("Null"))
    print("Number of bytes occupied by versions in the container:", dfT.agg({'Content-Length': 'sum'}).first()['sum(Content-Length)'])
    
  2. Hücreyi çalıştırmak için SHIFT + ENTER tuşlarına basın.

    Not defteri blob sürümlerinin sayısını ve blob sürümlerinin kapladığı toplam bayt sayısını görüntüler.

    Hücreyi çalıştırdığınızda görüntülenen ve sürüm sayısını ve toplam sürümlerin toplam boyutunu gösteren sonuçların ekran görüntüsü.

Blob türüne göre blob sayısını alma

  1. Yeni bir hücreye aşağıdaki kodu yapıştırın:

    display(df.groupBy('BlobType').count().withColumnRenamed("count", "Total number of blobs in the container by BlobType"))
    
  2. Hücreyi çalıştırmak için SHIFT + ENTER tuşlarına basın.

    Not defteri, türe göre blob türlerinin sayısını görüntüler.

    Türe göre blob türlerinin sayısını gösteren hücreyi çalıştırdığınızda görüntülenen sonuçların ekran görüntüsü.

İçerik türüne göre blob sayısını alma

  1. Yeni bir hücreye aşağıdaki kodu yapıştırın:

    display(df.groupBy('Content-Type').count().withColumnRenamed("count", "Total number of blobs in the container by Content-Type"))
    
  2. Hücreyi çalıştırmak için SHIFT + ENTER tuşlarına basın.

    Not defteri, her içerik türüyle ilişkili blob sayısını görüntüler.

    İçerik türüne göre blob sayısını gösteren hücreyi çalıştırdığınızda görüntülenen sonuçların ekran görüntüsü.

Kümeyi sonlandırma

Gereksiz faturalamayı önlemek için kümeyi sonlandırdığından emin olun. Bkz . Kümeyi sonlandırma.

Sonraki adımlar