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 Azure Blob Storage wraz z usługą Azure Databricks.

Ten samouczek zawiera informacje na temat wykonywania następujących czynności:

  • Generowanie raportu spisu
  • Tworzenie obszaru roboczego, klastra 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 Wszystko
Częstotliwość spisu Codziennie
Format eksportu CSV

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

Konfigurowanie usługi Azure Databricks

W tej sekcji utworzysz obszar roboczy, klaster 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. Tworzenie klastra. Zobacz Tworzenie klastra.

  3. Utwórz notes i wybierz język Python jako domyślny język notesu. Zobacz Tworzenie 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 klawisze SHIFT+ENTER, aby uruchomić kod w tym bloku.

Pobieranie liczby i rozmiaru obiektów blob

  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 klawisze SHIFT + ENTER, 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 podczas uruchamiania komórki zawierającej liczbę obiektów blob i rozmiar 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 klawisze SHIFT + ENTER, aby uruchomić komórkę.

    W notesie jest wyświetlana liczba migawek i całkowita 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 klawisze 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 klawisze 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 przedstawiającej 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 klawisze 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 podczas uruchamiania komórki zawierającej liczbę obiektów blob według typu zawartości.

Kończenie klastra

Aby uniknąć niepotrzebnych rozliczeń, pamiętaj o zakończeniu działania klastra. Zobacz Kończenie klastra.

Następne kroki