Tutorial: Cálculo de las estadísticas de contenedor mediante Databricks
En este tutorial se muestra cómo recopilar estadísticas sobre los contenedores utilizando el inventario de Azure Blob Storage junto con Azure Databricks.
En este tutorial aprenderá a:
- Generación de un informe de inventario
- Crear un área de trabajo, un clúster y un cuaderno de Azure Databricks
- Leer el archivo de inventario de blobs
- Obtener el número y el tamaño total de blobs, instantáneas y versiones
- Obtener el número de blobs por tipo de blob y tipo de contenido
Prerrequisitos
Una suscripción a Azure: cree una cuenta gratuita
Una cuenta de almacenamiento de Azure: cree una cuenta de almacenamiento
Asegúrese de que la identidad de usuario tiene asignado el rol Colaborador de datos de Storage Blob.
Generación de un informe de inventario
Habilite los informes de inventario de blobs para su cuenta de almacenamiento. Consulte Habilitación de los informes de inventario de blobs de Azure Storage.
Use las opciones de configuración siguientes:
Configuración | Value |
---|---|
Nombre de la regla | blobinventory |
Contenedor | <nombre del contenedor> |
Tipo de objeto a inventario | Blob |
Tipos de blobs | Blobs en bloques, blobs en páginas y blobs anexos |
Subtipos | incluir versiones de blob, incluir instantáneas, incluir blobs eliminados |
Campos de inventario de blobs | Todo |
Frecuencia de inventario | Diario |
Formato de exportación | CSV |
Es posible que tenga que esperar hasta 24 horas después de habilitar los informes de inventario para que se genere el primer informe.
Configuración de Azure Databricks
En esta sección, creará un área de trabajo, un clúster y un cuaderno de Azure Databricks. Más adelante en este tutorial, pegará fragmentos de código en celdas de cuaderno y, a continuación, los ejecutará para recopilar estadísticas de contenedor.
Crear un área de trabajo de Azure Databricks. Consulte Creación de un área de trabajo de Azure Databricks.
Crear un clúster. Consulte Creación de un clúster.
Cree un cuaderno y elija Python como lenguaje predeterminado del cuaderno. Consulte Creación de un cuaderno.
Leer el archivo de inventario de blobs
Copie y pegue el siguiente bloque de código en la primera celda, pero no ejecute el código aún.
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')
En este bloque de código, reemplace los valores siguientes:
Reemplace el valor de marcador de posición
<storage-account-name>
por el nombre de la cuenta de almacenamiento.Reemplace el valor de marcador de posición
<storage-account-key>
por la clave de cuenta de la cuenta de almacenamiento.Reemplace el valor del marcador de posición
<container-name>
por el contenedor que contiene los informes de inventario.Reemplace el marcador de posición
<blob-inventory-file-name>
por el nombre completo del archivo de inventario (por ejemplo:2023/02/02/02-16-17/blobinventory/blobinventory_1000000_0.csv
).Si la cuenta tiene un espacio de nombres jerárquico, establezca la variable
hierarchical_namespace_enabled
enTrue
.
Presione las teclas MAYÚS + ENTRAR para ejecutar el código de este bloque.
Obtención del recuento y tamaño de blobs
En una nueva celda, pegue el código siguiente:
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)'])
Presione MAYÚS + ENTRAR para ejecutar la celda.
El cuaderno muestra el número de blobs en un contenedor y el número de bytes ocupados por blobs en el contenedor.
Obtención del recuento y el tamaño de las instantáneas
En una nueva celda, pegue el código siguiente:
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)'])
Presione MAYÚS + ENTRAR para ejecutar la celda.
El cuaderno muestra el número de instantáneas y el número total de bytes ocupados por las instantáneas de blob.
Obtención del número de versiones y el tamaño
En una nueva celda, pegue el código siguiente:
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)'])
Presione MAYÚS + ENTRAR para ejecutar la celda.
El cuaderno muestra el número de versiones de blob y el número total de bytes ocupados por las versiones de blobs.
Obtención del recuento de blobs por tipo de blob
En una nueva celda, pegue el código siguiente:
display(df.groupBy('BlobType').count().withColumnRenamed("count", "Total number of blobs in the container by BlobType"))
Presione MAYÚS + ENTRAR para ejecutar la celda.
El cuaderno muestra el número de tipos de blobs por tipo.
Obtención del recuento de blobs por tipo de contenido
En una nueva celda, pegue el código siguiente:
display(df.groupBy('Content-Type').count().withColumnRenamed("count", "Total number of blobs in the container by Content-Type"))
Presione MAYÚS + ENTRAR para ejecutar la celda.
El cuaderno muestra el número de blobs asociados a cada tipo de contenido.
Finalización del clúster
Para evitar la facturación innecesaria, asegúrese de finalizar el clúster. Consulte Finalización de un clúster.
Pasos siguientes
Obtenga información sobre usar Azure Synapse para calcular el recuento de blobs y su tamaño total por contenedor. Consulte Cálculo del recuento de blobs y su tamaño total por contenedor mediante el inventario de Azure Storage.
Aprenda a generar y visualizar estadísticas que describen contenedores y blobs. Consulte Tutorial: Análisis de informes de inventario de blobs.
Obtenga información sobre las formas de optimizar los costos en función del análisis de los blobs y contenedores. Consulte estos artículos:
Planeamiento y administración de costos de Azure Blob Storage
Estimación del coste de archivar datos
Optimizar los costes mediante la administración automática del ciclo de vida de los datos