Delen via


Zelfstudie: Containerstatistieken berekenen met behulp van Databricks

In deze zelfstudie leert u hoe u statistieken over uw containers verzamelt met behulp van Azure Blob Storage-inventaris, samen met Azure Databricks.

In deze zelfstudie leert u het volgende:

  • Een inventarisrapport genereren
  • Een Azure Databricks-werkruimte en -notebook maken
  • Het blob-inventarisbestand lezen
  • Het aantal en de totale grootte van blobs, momentopnamen en versies ophalen
  • Het aantal blobs ophalen op blobtype en inhoudstype

Vereisten

Een inventarisrapport genereren

Schakel blob-inventarisrapporten in voor uw opslagaccount. Zie Azure Storage-blobinventarisrapporten inschakelen.

Gebruik de volgende configuratie-instellingen:

Instelling Weergegeven als
Naam van de regel blobinventory
Container <naam van uw container>
Objecttype naar inventaris Blob
Blob-typen Blok-blobs, pagina-blobs en toevoeg-blobs
Subtypen blobversies opnemen, momentopnamen opnemen, verwijderde blobs opnemen
Blob-inventarisvelden Alle
Inventarisfrequentie Dagelijks
Exportindeling CSV

Mogelijk moet u maximaal 24 uur wachten nadat u inventarisrapporten hebt ingeschakeld voordat uw eerste rapport is gegenereerd.

Azure Databricks configureren

In deze sectie maakt u een Azure Databricks-werkruimte en -notebook. Verderop in deze zelfstudie plakt u codefragmenten in notebookcellen en voert u deze uit om containerstatistieken te verzamelen.

  1. Een Azure Databricks-werkruimte maken. Zie Een Azure Databricks-werkruimte maken.

  2. Maak een nieuwe notebook. Zie Een notitieblok maken.

  3. Kies Python als de standaardtaal van het notebook.

Het blob-inventarisbestand lezen

  1. Kopieer en plak het volgende codeblok in de eerste cel, maar voer deze code nog niet uit.

    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. Vervang in dit codeblok de volgende waarden:

    • Vervang de waarde van de tijdelijke plaatsaanduiding <storage-account-name> door de naam van uw opslagaccount.

    • Vervang de waarde van de <storage-account-key> tijdelijke aanduiding door de accountsleutel van uw opslagaccount.

    • Vervang de waarde van de <container-name> tijdelijke aanduiding door de container die de inventarisrapporten bevat.

    • Vervang de <blob-inventory-file-name> tijdelijke aanduiding door de volledig gekwalificeerde naam van het inventarisbestand (bijvoorbeeld: 2023/02/02/02-16-17/blobinventory/blobinventory_1000000_0.csv).

    • Als uw account een hiërarchische naamruimte heeft, stelt u de hierarchical_namespace_enabled variabele in op True.

  3. Druk op de knop Uitvoeren om de code in deze cel uit te voeren.

Blobaantal en -grootte ophalen

  1. Plak de volgende code in een nieuwe cel:

    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. Druk op de knop Uitvoeren om de cel uit te voeren.

    In het notebook wordt het aantal blobs in een container en het aantal bytes weergegeven dat door blobs in de container wordt bezet.

    Schermopname van resultaten die worden weergegeven wanneer u de cel uitvoert met het aantal blobs en de grootte van blobs in de container.

Aantal momentopnamen en grootte ophalen

  1. Plak de volgende code in een nieuwe cel:

    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. Druk op de knop Uitvoeren om de cel uit te voeren.

    In het notebook wordt het aantal momentopnamen en het totale aantal bytes weergegeven dat wordt bezet door blob-momentopnamen.

    Schermopname van resultaten die worden weergegeven wanneer u de cel uitvoert met het aantal momentopnamen en de totale gecombineerde grootte van momentopnamen.

Aantal versies en grootte ophalen

  1. Plak de volgende code in een nieuwe cel:

    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. Druk op Shift+Enter om de cel uit te voeren.

    In het notebook wordt het aantal blobversies en het totale aantal bytes weergegeven dat wordt bezet door blobversies.

    Schermopname van resultaten die worden weergegeven wanneer u de cel uitvoert met het aantal versies en de totale gecombineerde grootte van versies.

Het aantal blobs ophalen op blobtype

  1. Plak de volgende code in een nieuwe cel:

    display(df.groupBy('BlobType').count().withColumnRenamed("count", "Total number of blobs in the container by BlobType"))
    
  2. Druk op Shift+Enter om de cel uit te voeren.

    In het notebook wordt het aantal blobtypen per type weergegeven.

    Schermopname van resultaten die worden weergegeven wanneer u de cel uitvoert met het aantal blobtypen per type.

Blobaantal ophalen op inhoudstype

  1. Plak de volgende code in een nieuwe cel:

    display(df.groupBy('Content-Type').count().withColumnRenamed("count", "Total number of blobs in the container by Content-Type"))
    
  2. Druk op Shift+Enter om de cel uit te voeren.

    In het notebook wordt het aantal blobs weergegeven dat aan elk inhoudstype is gekoppeld.

    Schermopname van resultaten die worden weergegeven wanneer u de cel uitvoert met het aantal blobs per inhoudstype.

Het cluster beëindigen

Als u onnodige facturering wilt voorkomen, beëindigt u uw rekenresource. Zie Een berekening beëindigen.

Volgende stappen