Share via


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

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.

  1. Crear un área de trabajo de Azure Databricks. Consulte Creación de un área de trabajo de Azure Databricks.

  2. Crear un clúster. Consulte Creación de un clúster.

  3. Cree un cuaderno y elija Python como lenguaje predeterminado del cuaderno. Consulte Creación de un cuaderno.

Leer el archivo de inventario de blobs

  1. 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')     
    
  2. 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 en True.

  3. Presione las teclas MAYÚS + ENTRAR para ejecutar el código de este bloque.

Obtención del recuento y tamaño de blobs

  1. 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)'])
    
  2. 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.

    Captura de pantalla de los resultados que aparecen al ejecutar la celda que muestra el número de blobs y el tamaño de los blobs en el contenedor.

Obtención del recuento y el tamaño de las instantáneas

  1. 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)'])
    
  2. 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.

    Captura de pantalla de los resultados que aparecen al ejecutar la celda que muestra el número de instantáneas y el tamaño combinado total de las instantáneas.

Obtención del número de versiones y el tamaño

  1. 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)'])
    
  2. 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.

    Captura de pantalla de los resultados que aparecen al ejecutar la celda que muestra el número de versiones y el tamaño combinado total de las versiones.

Obtención del recuento de blobs por tipo de blob

  1. 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"))
    
  2. Presione MAYÚS + ENTRAR para ejecutar la celda.

    El cuaderno muestra el número de tipos de blobs por tipo.

    Captura de pantalla de los resultados que aparecen al ejecutar la celda que muestra el número de tipos de blobs por tipo.

Obtención del recuento de blobs por tipo de contenido

  1. 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"))
    
  2. Presione MAYÚS + ENTRAR para ejecutar la celda.

    El cuaderno muestra el número de blobs asociados a cada tipo de contenido.

    Captura de pantalla de los resultados que aparecen al ejecutar la celda que muestra el número de blobs por 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