Compartilhar via


Tutorial: Calcular estatísticas de contêiner usando o Databricks

Este tutorial mostra como coletar estatísticas sobre seus contêineres usando o inventário do Armazenamento de Blobs do Azure junto com o Azure Databricks.

Neste tutorial, você aprenderá como:

  • Gerar um relatório de inventário
  • Criar um workspace do Azure Databricks, grupo e notebook
  • Ler o arquivo de inventário de blobs
  • Obter o número e o tamanho total de blobs, instantâneos e versões
  • Obter o número de blobs por tipo de blob e tipo de conteúdo

Pré-requisitos

Gerar um relatório de inventário

Habilite os relatórios de inventário de blobs para a sua conta de armazenamento. Consulte Habilitar relatórios de inventário de blobs do Armazenamento do Azure.

Use as seguintes configurações:

Configuração Valor
Nome da regra blobinventory
Contêiner <nome do contêiner>
Tipo de objeto para inventário Blob
Tipos de blobs Blobs de blocos, blobs de páginas e blobs de acréscimo
Subtipos incluir versões de blob, incluir instantâneos, incluir blobs excluídos
Campos de inventário de blobs Todos
Frequência de inventário Diariamente
Formato de exportação CSV

Talvez seja necessário aguardar até 24 horas depois de habilitar os relatórios de inventário para que o seu primeiro relatório seja gerado.

Configurar o Azure Databricks

Nesta seção, você criará um workspace, um cluster e um notebook do Azure Databricks. Posteriormente neste tutorial, você colará snippets de código em células de notebook e, em seguida, os executará para coletar estatísticas de contêiner.

  1. Criar um workspace do Azure Databricks. Consulte Criar um workspace do Azure Databricks.

  2. Criar um cluster. Consulte Criar um cluster.

  3. Crie um notebook e escolha Python como a linguagem padrão do notebook. Confira Criar um notebook.

Ler o arquivo de inventário de blobs

  1. Copie e cole o bloco de código a seguir na primeira célula, mas não execute esse código ainda.

    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. Neste bloco de código, substitua os seguintes valores:

    • Substitua o valor de espaço reservado <storage-account-name> pelo nome da sua conta de armazenamento.

    • Substitua o valor de espaço reservado <storage-account-key> pelo nome da sua conta de armazenamento.

    • Substitua o valor do espaço reservado <container-name> pelo contêiner que contém os relatórios de inventário.

    • Substitua o espaço reservado <blob-inventory-file-name> pelo nome totalmente qualificado do arquivo de inventário (por exemplo: 2023/02/02/02-16-17/blobinventory/blobinventory_1000000_0.csv).

    • Se sua conta tiver um namespace hierárquico, defina a variável hierarchical_namespace_enabled como True.

  3. Pressione as teclas SHIFT+ENTER para executar o código nesse bloco.

Obter contagem e tamanho de blobs

  1. Em uma nova célula, cole o seguinte código:

    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. Pressione SHIFT + ENTER para executar a célula.

    O notebook exibe o número de blobs em um contêiner e o número de bytes ocupados por blobs no contêiner.

    Captura de tela dos resultados que aparecem quando você executa a célula que mostra o número de blobs e o tamanho dos blobs no contêiner.

Obter contagem e tamanho de instantâneos

  1. Em uma nova célula, cole o seguinte código:

    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. Pressione SHIFT + ENTER para executar a célula.

    O notebook exibe o número de instantâneos e o número total de bytes ocupados por instantâneos de blob.

    Captura de tela dos resultados que aparecem quando você executa a célula que mostra o número de instantâneos e o tamanho total combinado de instantâneos.

Obter a contagem e o tamanho das versões

  1. Em uma nova célula, cole o seguinte código:

    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. Pressione SHIFT + ENTER para executar a célula.

    O notebook exibe o número de versões de blob e o número total de bytes ocupados por versões de blob.

    Captura de tela dos resultados que aparecem quando você executa a célula que mostra o número de versões e o tamanho total combinado de versões.

Obter contagem de blobs por tipo de blob

  1. Em uma nova célula, cole o seguinte código:

    display(df.groupBy('BlobType').count().withColumnRenamed("count", "Total number of blobs in the container by BlobType"))
    
  2. Pressione SHIFT + ENTER para executar a célula.

    O notebook exibe o número de tipos de blob por tipo.

    Captura de tela dos resultados que aparecem quando você executa a célula que mostra o número de tipos de blob por tipo.

Obter contagem de blobs por tipo de conteúdo

  1. Em uma nova célula, cole o seguinte código:

    display(df.groupBy('Content-Type').count().withColumnRenamed("count", "Total number of blobs in the container by Content-Type"))
    
  2. Pressione SHIFT + ENTER para executar a célula.

    O notebook exibe o número de blobs associados a cada tipo de conteúdo.

    Captura de tela dos resultados que aparecem quando você executa a célula que mostra o número de blobs por tipo de conteúdo.

Encerrar o cluster

Para evitar cobrança desnecessária, encerre o cluster. Confira Encerrar um cluster.

Próximas etapas