Esercitazione: Calcolare le statistiche dei contenitori usando Databricks

Questa esercitazione mostra come acquisire le statistiche sui contenitori usando l'inventario di Archiviazione BLOB di Azure insieme ad Azure Databricks.

In questa esercitazione apprenderai a:

  • Generare un report di inventario
  • Creare un’area di lavoro, un cluster e un notebook di Azure Databricks
  • Leggere il file di inventario del BLOB
  • Ottenere il numero e le dimensioni totali di BLOB, snapshot e versioni
  • Ottenere il numero di BLOB in base al tipo di BLOB e al tipo di contenuto

Prerequisiti

Generare un report di inventario

Abilitare i report di inventario BLOB per l'account di archiviazione. Vedere Abilitare i report dell'inventario BLOB di Archiviazione di Azure.

Usare le impostazioni di configurazione seguenti:

Impostazione Valore
Nome regola blobinventory
Contenitore <nome del contenitore>
Tipo di oggetto per l’inventario BLOB
Tipi di BLOB BLOB in blocchi, BLOB di pagine e BLOB di accodamento
Sottotipi includere versioni BLOB, includere snapshot, includere BLOB eliminati
Campi dell'inventario BLOB Tutte le date
Frequenza dell’inventario Ogni giorno
Formato di esportazione CSV

Per il primo report da generare, potrebbe essere necessario attendere fino a 24 ore dopo l’abilitazione dei report di inventario.

Configurare Azure Databricks

In questa sezione viene creata un'area di lavoro, un cluster e un notebook di Azure Databricks. Più avanti in questa esercitazione si procederà a incollare frammenti di codice nelle celle del notebook, e quindi eseguirli per acquisire le statistiche del contenitore.

  1. Creare un'area di lavoro di Azure Databricks. Vedere Creare un'area di lavoro di Azure Databricks.

  2. Creare un cluster. Vedere Creare un cluster.

  3. Creare un notebook e scegliere Python come linguaggio predefinito del notebook. Vedere Creare un notebook.

Leggere il file di inventario del BLOB

  1. Copiare e incollare il blocco di codice seguente nella prima cella, ma non eseguirlo ancora.

    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. In questo blocco di codice sostituire i valori seguenti:

    • Sostituire il valore segnaposto <storage-account-name> con il nome del proprio account di archiviazione.

    • Sostituire il valore del segnaposto <storage-account-key> con la chiave dell’account del proprio account di archiviazione.

    • Sostituire il valore del segnaposto <container-name> con il contenitore che conserva i report di inventario.

    • Sostituire il segnaposto <blob-inventory-file-name> con il nome completo del file di inventario (ad esempio: 2023/02/02/02-16-17/blobinventory/blobinventory_1000000_0.csv).

    • Se l'account ha uno spazio dei nomi gerarchico, impostare la variabile hierarchical_namespace_enabled su True.

  3. Premere MAIUSC + INVIO per eseguire il codice in questo blocco.

Ottenere il numero e le dimensioni del BLOB

  1. In una nuova cella, incollare il codice seguente:

    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. Premere MAIUSC+INVIO per eseguire la cella.

    Il notebook visualizza il numero di BLOB in un contenitore e il numero di byte occupati dai BLOB nel contenitore.

    Screenshot of results that appear when you run the cell showing the number of blobs and the size of blobs in the container.

Ottenere il numero e le dimensioni degli snapshot

  1. In una nuova cella, incollare il codice seguente:

    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. Premere MAIUSC+INVIO per eseguire la cella.

    Il notebook visualizza il numero di snapshot e il numero totale di byte occupati dagli snapshot del BLOB.

    Screenshot of results that appear when you run the cell showing the number of snapshots and the total combined size of snapshots.

Ottenere il numero e le dimensioni delle versioni

  1. In una nuova cella, incollare il codice seguente:

    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. Premere MAIUSC+INVIO per eseguire la cella.

    Il notebook visualizza il numero di versioni del BLOB e il numero totale di byte che queste occupano.

    Screenshot of results that appear when you run the cell showing the number of versions and the total combined size of versions.

Ottenere il numero di BLOB in base al tipo di BLOB

  1. In una nuova cella, incollare il codice seguente:

    display(df.groupBy('BlobType').count().withColumnRenamed("count", "Total number of blobs in the container by BlobType"))
    
  2. Premere MAIUSC+INVIO per eseguire la cella.

    Il notebook visualizza il numero di tipi di BLOB in base al tipo.

    Screenshot of results that appear when you run the cell showing the number of blob types by type.

Ottenere il numero di BLOB in base al tipo di contenuto

  1. In una nuova cella, incollare il codice seguente:

    display(df.groupBy('Content-Type').count().withColumnRenamed("count", "Total number of blobs in the container by Content-Type"))
    
  2. Premere MAIUSC+INVIO per eseguire la cella.

    Il notebook visualizza il numero di BLOB associati a ciascun tipo di contenuto.

    Screenshot of results that appear when you run the cell showing the number of blobs by content-type.

Terminare il cluster

Per evitare una fatturazione non necessaria, assicurarsi di terminare il cluster. Vedere Terminare un cluster.

Passaggi successivi