Partilhar via


Tutorial: Calcular estatísticas de contêiner usando 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, irá aprender a:

  • Gerar um relatório de inventário
  • Criar um espaço de trabalho e um bloco de anotações do Azure Databricks
  • Leia o arquivo de inventário de blob
  • Obtenha 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 relatórios de inventário de blob para sua conta de armazenamento. Consulte Habilitar relatórios de inventário de blob de armazenamento do Azure.

Use as seguintes definições de configuração:

Definição Value
Nome da regra blobinventory
Contentor <Nome do seu contentor>
Tipo de objeto para inventário Blob
Tipos de blobs Blobs de bloco, blobs de página e blobs de acréscimo
Subtipos incluir versões de blob, incluir instantâneos, incluir blobs excluídos
Campos de inventário de Blob Todos
Frequência do inventário Diárias
Formato de exportação CSV

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

Configurar o Azure Databricks

Nesta seção, você cria um espaço de trabalho e um bloco de anotações do Azure Databricks. Mais adiante neste tutorial, você cola trechos de código em células do bloco de anotações e os executa para coletar estatísticas de contêiner.

  1. Crie um espaço de trabalho do Azure Databricks. Consulte Criar um espaço de trabalho do Azure Databricks.

  2. Crie um novo bloco de notas. Consulte Criar um bloco de notas.

  3. Escolha Python como o idioma padrão do bloco de anotações.

Leia o arquivo de inventário de blob

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

    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 do <storage-account-key> espaço reservado pela chave da conta da sua conta de armazenamento.

    • Substitua o valor do <container-name> espaço reservado 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 hierarchical_namespace_enabled variável como True.

  3. Pressione o botão Executar para executar o código nesta célula.

Obter contagem e tamanho de blob

  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 o botão Executar para executar a célula.

    O bloco de anotações 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 mostrando 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 o botão Executar para executar a célula.

    O bloco de anotações 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 mostrando o número de instantâneos e o tamanho total combinado dos instantâneos.

Obter contagem de versões e tamanho

  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 bloco de anotações exibe o número de versões de blob e o número total de bytes ocupados por versões de blob.

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

Obter contagem de blob 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 bloco de anotações exibe o número de tipos de blob por tipo.

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

Obter contagem de blob 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 bloco de anotações 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 mostrando o número de blobs por tipo de conteúdo.

Encerrar o cluster

Para evitar cobranças desnecessárias, encerre seu recurso de computação. Consulte encerrar uma computação.

Próximos passos