Tutorial: Berechnen von Containerstatistiken mithilfe von Databricks

In diesem Tutorial erfahren Sie, wie Sie Statistiken zu Ihren Containern sammeln, indem Sie Azure Blob Storage-Bestand zusammen mit Azure Databricks verwenden.

In diesem Tutorial lernen Sie, wie die folgenden Aufgaben ausgeführt werden:

  • Generieren eines Inventurberichts
  • Erstellen eines Azure Databricks-Arbeitsbereichs, Clusters und Notebooks
  • Lesen der Blobbestandsdatei
  • Abrufen der Anzahl und Gesamtgröße von Blobs, Momentaufnahmen und Versionen
  • Abrufen der Anzahl von Blobs nach Blobtyp und Inhaltstyp

Voraussetzungen

Generieren eines Inventurberichts

Aktivieren Sie Blobinventurberichte für Ihr Speicherkonto. Weitere Informationen finden Sie unter Aktivieren von Azure Storage-Blobinventurberichten.

Verwenden Sie die folgenden Konfigurationseinstellungen:

Einstellung Wert
Regelname blobinventory
Container <Name Ihres Containers>
Objekttyp des Bestands Blob
Blobtypen Blockblobs, Seitenblobs und Anfügeblobs
Untertypen Einschließen von Blobversionen, Momentaufnahmen und gelöschten Blobs
Blobinventurfelder Alle
Inventurhäufigkeit Täglich
Exportformat CSV

Möglicherweise müssen Sie nach dem Aktivieren von Inventurberichten bis zu 24 Stunden warten, bis der erste Bericht generiert werden kann.

Konfigurieren von Azure Databricks

In diesem Abschnitt erstellen Sie einen Azure Databricks-Arbeitsbereich, einen Cluster und ein Notebook. Später in diesem Tutorial fügen Sie Codeschnipsel in Notebookzellen ein und führen sie dann aus, um Containerstatistiken zu sammeln.

  1. Erstellen eines Azure Databricks-Arbeitsbereichs Weitere Informationen finden Sie unter Erstellen eines Azure Databricks-Arbeitsbereichs.

  2. Erstellen eines Clusters Weitere Informationen finden Sie unter Erstellen eines Clusters.

  3. Erstellen Sie ein Notebook, und wählen Sie Python als Standardsprache für das Notebook aus. Weitere Informationen finden Sie unter Erstellen eines Notebooks.

Lesen der Blobbestandsdatei

  1. Kopieren Sie den folgenden Codeblock, und fügen Sie ihn in die erste Zelle ein, führen Sie den Code jedoch noch nicht aus.

    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. Ersetzen Sie in diesem Codeblock die folgenden Werte:

    • Ersetzen Sie den Platzhalterwert <storage-account-name> durch den Namen Ihres Speicherkontos.

    • Ersetzen Sie den Platzhalterwert <storage-account-key> durch den Kontoschlüssel Ihres Speicherkontos.

    • Ersetzen Sie den Platzhalterwert <container-name> durch den Container, der die Inventurberichte enthält.

    • Ersetzen Sie den Platzhalter <blob-inventory-file-name> durch den vollqualifizierten Namen der Bestandsdatei (Beispiel: 2023/02/02/02-16-17/blobinventory/blobinventory_1000000_0.csv).

    • Wenn Ihr Konto über einen hierarchischen Namespace verfügt, legen Sie die Variable hierarchical_namespace_enabled auf True fest.

  3. Drücken Sie UMSCHALT+EINGABE, um den Code in diesem Block auszuführen.

Abrufen von Blobanzahl und -größe

  1. Fügen Sie in einer neuen Zelle den folgenden Code ein:

    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. Drücken Sie zum Ausführen der Zelle UMSCHALT+EINGABETASTE.

    Das Notebook zeigt die Anzahl der Blobs in einem Container sowie die Anzahl der Bytes an, die von Blobs im Container belegt werden.

    Screenshot der Ergebnisse, die angezeigt werden, wenn Sie die Zelle ausführen, und die die Anzahl und die Größe der Blobs im Container enthalten

Abrufen der Anzahl und Größe von Momentaufnahmen

  1. Fügen Sie in einer neuen Zelle den folgenden Code ein:

    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. Drücken Sie zum Ausführen der Zelle UMSCHALT+EINGABETASTE.

    Das Notebook zeigt die Anzahl der Momentaufnahmen und die Gesamtanzahl an Bytes an, die von Blobmomentaufnahmen belegt werden.

    Screenshot der Ergebnisse, die angezeigt werden, wenn Sie die Zelle ausführen, und die die Anzahl und die Gesamtgröße der Momentaufnahmen enthalten

Abrufen der Versionsanzahl und -größe

  1. Fügen Sie in einer neuen Zelle den folgenden Code ein:

    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. Drücken Sie zum Ausführen der Zelle UMSCHALT+EINGABETASTE.

    Das Notebook zeigt die Anzahl der Blobversionen und die Gesamtanzahl der Bytes, die von Blobversionen belegt werden.

    Screenshot der Ergebnisse, die angezeigt werden, wenn Sie die Zelle ausführen, und die die Anzahl und die Gesamtgröße der Versionen enthalten

Abrufen der Blobanzahl nach Blobtyp

  1. Fügen Sie in einer neuen Zelle den folgenden Code ein:

    display(df.groupBy('BlobType').count().withColumnRenamed("count", "Total number of blobs in the container by BlobType"))
    
  2. Drücken Sie zum Ausführen der Zelle UMSCHALT+EINGABETASTE.

    Das Notebook zeigt die Anzahl der Blobtypen nach Typ an.

    Screenshot der Ergebnisse, die angezeigt werden, wenn Sie die Zelle ausführen, und die die Anzahl der Blobtypen nach Typ enthalten

Abrufen der Blobanzahl nach Inhaltstyp

  1. Fügen Sie in einer neuen Zelle den folgenden Code ein:

    display(df.groupBy('Content-Type').count().withColumnRenamed("count", "Total number of blobs in the container by Content-Type"))
    
  2. Drücken Sie zum Ausführen der Zelle UMSCHALT+EINGABETASTE.

    Das Notebook zeigt die Anzahl der Blobs an, die jedem Inhaltstyp zugeordnet sind.

    Screenshot der Ergebnisse, die angezeigt werden, wenn Sie die Zelle ausführen, und die die Anzahl der Blobs nach Inhaltstyp enthalten

Beenden des Clusters

Um eine unnötige Abrechnung zu vermeiden, stellen Sie sicher, dass Sie den Cluster beenden. Weitere Informationen finden Sie unter Beenden eines Clusters.

Nächste Schritte