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
Una sottoscrizione di Azure: creare un account gratuito
Un account di archiviazione di Azure: creare un account di archiviazione
Verificare che all'identità utente sia assegnato il ruolo di Collaboratore ai dati del BLOB di archiviazione.
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.
Creare un'area di lavoro di Azure Databricks. Vedere Creare un'area di lavoro di Azure Databricks.
Creare un cluster. Vedere Creare un cluster.
Creare un notebook e scegliere Python come linguaggio predefinito del notebook. Vedere Creare un notebook.
Leggere il file di inventario del BLOB
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')
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
suTrue
.
Premere MAIUSC + INVIO per eseguire il codice in questo blocco.
Ottenere il numero e le dimensioni del BLOB
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)'])
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.
Ottenere il numero e le dimensioni degli snapshot
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)'])
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.
Ottenere il numero e le dimensioni delle versioni
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)'])
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.
Ottenere il numero di BLOB in base al tipo di BLOB
In una nuova cella, incollare il codice seguente:
display(df.groupBy('BlobType').count().withColumnRenamed("count", "Total number of blobs in the container by BlobType"))
Premere MAIUSC+INVIO per eseguire la cella.
Il notebook visualizza il numero di tipi di BLOB in base al tipo.
Ottenere il numero di BLOB in base al tipo di contenuto
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"))
Premere MAIUSC+INVIO per eseguire la cella.
Il notebook visualizza il numero di BLOB associati a ciascun tipo di contenuto.
Terminare il cluster
Per evitare una fatturazione non necessaria, assicurarsi di terminare il cluster. Vedere Terminare un cluster.
Passaggi successivi
Informazioni su come utilizzare Azure Synapse per calcolare il numero di BLOB e le dimensioni totali dei BLOB per contenitore. Vedere Calcolare il numero di BLOB e le dimensioni totali per contenitore usando l'inventario di Archiviazione di Azure
Informazioni su come generare e visualizzare le statistiche che descrivono contenitori e BLOB. Vedere Esercitazione: Analizzare i report di inventario del BLOB
Informazioni sui modi per ottimizzare i costi in base all'analisi dei BLOB e dei contenitori. Vedere i seguenti articoli:
Pianificare e gestire i costi dell'Archiviazione BLOB di Azure
Stimare il costo dell'archiviazione dei dati
Ottimizzare i costi gestendo automaticamente il ciclo di vita dei dati