Udostępnij za pośrednictwem


Samouczek: obliczanie statystyk kontenera przy użyciu usługi Databricks

W tym samouczku pokazano, jak zbierać statystyki dotyczące kontenerów przy użyciu spisu usługi Azure Blob Storage wraz z usługą Azure Databricks.

Z tego samouczka dowiesz się, jak wykonywać następujące czynności:

  • Generowanie raportu spisu
  • Tworzenie obszaru roboczego i notesu usługi Azure Databricks
  • Odczytywanie pliku spisu obiektów blob
  • Pobieranie liczby i całkowitego rozmiaru obiektów blob, migawek i wersji
  • Pobieranie liczby obiektów blob według typu obiektu blob i typu zawartości

Wymagania wstępne

Generowanie raportu spisu

Włącz raporty spisu obiektów blob dla konta magazynu. Zobacz Włączanie raportów spisu obiektów blob usługi Azure Storage.

Użyj następujących ustawień konfiguracji:

Ustawienie Wartość
Nazwa reguły blobinventory
Kontener <nazwa kontenera>
Typ obiektu do spisu Obiekt blob
Typy obiektów blob Blokowe obiekty blob, stronicowe obiekty blob i uzupełnialne obiekty blob
Podtypów dołączanie wersji obiektów blob, dołączanie migawek, dołączanie usuniętych obiektów blob
Pola spisu obiektów blob wszystkie
Częstotliwość spisu Codziennie
Format eksportu CSV

Po włączeniu raportów spisu do wygenerowania pierwszego raportu może być konieczne odczekanie do 24 godzin.

Konfigurowanie usługi Azure Databricks

W tej sekcji utworzysz obszar roboczy i notes usługi Azure Databricks. W dalszej części tego samouczka wklejasz fragmenty kodu do komórek notesu, a następnie uruchamiasz je w celu zebrania statystyk kontenera.

  1. Tworzenie obszaru roboczego usługi Azure Databricks. Zobacz Tworzenie obszaru roboczego usługi Azure Databricks.

  2. Utwórz nowy notes. Zobacz Tworzenie notesu.

  3. Wybierz język Python jako domyślny język notesu.

Odczytywanie pliku spisu obiektów blob

  1. Skopiuj i wklej następujący blok kodu do pierwszej komórki, ale jeszcze nie uruchamiaj kodu.

    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. W tym bloku kodu zastąp następujące wartości:

    • Zastąp wartość symbolu zastępczego <storage-account-name> nazwą konta magazynu.

    • Zastąp wartość symbolu <storage-account-key> zastępczego kluczem konta magazynu.

    • Zastąp wartość symbolu <container-name> zastępczego kontenerem, który przechowuje raporty spisu.

    • <blob-inventory-file-name> Zastąp symbol zastępczy w pełni kwalifikowaną nazwą pliku spisu (na przykład: 2023/02/02/02-16-17/blobinventory/blobinventory_1000000_0.csv).

    • Jeśli konto ma hierarchiczną przestrzeń nazw, ustaw zmienną hierarchical_namespace_enabled na True.

  3. Naciśnij przycisk Uruchom, aby uruchomić kod w tej komórce.

Pobieranie liczby obiektów blob i rozmiaru

  1. W nowej komórce wklej następujący kod:

    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. Naciśnij przycisk uruchamiania, aby uruchomić komórkę.

    W notesie jest wyświetlana liczba obiektów blob w kontenerze oraz liczba bajtów zajmowanych przez obiekty blob w kontenerze.

    Zrzut ekranu przedstawiający wyniki wyświetlane po uruchomieniu komórki z liczbą obiektów blob i rozmiarem obiektów blob w kontenerze.

Pobieranie liczby i rozmiaru migawek

  1. W nowej komórce wklej następujący kod:

    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. Naciśnij przycisk uruchamiania, aby uruchomić komórkę.

    W notesie jest wyświetlana liczba migawek i łączna liczba bajtów zajmowanych przez migawki obiektów blob.

    Zrzut ekranu przedstawiający wyniki wyświetlane po uruchomieniu komórki z liczbą migawek i łącznym rozmiarem migawek.

Pobieranie liczby wersji i rozmiaru

  1. W nowej komórce wklej następujący kod:

    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. Naciśnij SHIFT + ENTER, aby uruchomić komórkę.

    W notesie jest wyświetlana liczba wersji obiektów blob i łączna liczba bajtów zajmowanych przez wersje obiektów blob.

    Zrzut ekranu przedstawiający wyniki wyświetlane po uruchomieniu komórki z liczbą wersji i łącznym rozmiarem wersji.

Pobieranie liczby obiektów blob według typu obiektu blob

  1. W nowej komórce wklej następujący kod:

    display(df.groupBy('BlobType').count().withColumnRenamed("count", "Total number of blobs in the container by BlobType"))
    
  2. Naciśnij SHIFT + ENTER, aby uruchomić komórkę.

    W notesie jest wyświetlana liczba typów obiektów blob według typu.

    Zrzut ekranu przedstawiający wyniki wyświetlane po uruchomieniu komórki z liczbą typów obiektów blob według typu.

Pobieranie liczby obiektów blob według typu zawartości

  1. W nowej komórce wklej następujący kod:

    display(df.groupBy('Content-Type').count().withColumnRenamed("count", "Total number of blobs in the container by Content-Type"))
    
  2. Naciśnij SHIFT + ENTER, aby uruchomić komórkę.

    W notesie jest wyświetlana liczba obiektów blob skojarzonych z każdym typem zawartości.

    Zrzut ekranu przedstawiający wyniki wyświetlane po uruchomieniu komórki z liczbą obiektów blob według typu zawartości.

Kończenie działania klastra

Aby uniknąć niepotrzebnych rozliczeń, zakończ zasób obliczeniowy. Zobacz Kończenie obliczeń.

Następne kroki