Partilhar via


Tutorial: Calcular estatísticas de contentores com o Databricks

Este tutorial mostra-lhe como recolher estatísticas sobre os seus contentores com Armazenamento de Blobs do Azure inventário juntamente com o Azure Databricks.

Neste tutorial, ficará a saber como:

  • Gerar um relatório de inventário
  • Criar uma área de trabalho, cluster e bloco de notas do Azure Databricks
  • Ler o ficheiro de inventário de blobs
  • Obter o número e o tamanho total dos 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

Ative os relatórios de inventário de blobs para a sua conta de armazenamento. Veja Ativar relatórios de inventário de blobs do Armazenamento do Azure.

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

Definição Valor
Nome da regra blobinventory
Contentor <nome do contentor>
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 blobs, incluir instantâneos, incluir blobs eliminados
Campos de inventário de blobs Todos
Frequência de inventário Diário
Exportar formato CSV

Poderá ter de aguardar até 24 horas após ativar os relatórios de inventário para que o primeiro relatório seja gerado.

Configurar o Azure Databricks

Nesta secção, vai criar uma área de trabalho, cluster e bloco de notas do Azure Databricks. Mais adiante neste tutorial, vai colar fragmentos de código em células do bloco de notas e, em seguida, executá-los para recolher estatísticas de contentor.

  1. Criar uma área de trabalho do Azure Databricks. Veja Criar uma área de trabalho do Azure Databricks.

  2. Criar um cluster. Veja Criar um cluster.

  3. Crie um bloco de notas e escolha Python como o idioma predefinido do bloco de notas. Consulte Criar um bloco de notas.

Ler o ficheiro de inventário de blobs

  1. Copie e cole o seguinte bloco de código na primeira célula, mas ainda não execute este 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 do <storage-account-name> marcador de posição pelo nome da sua conta de armazenamento.

    • Substitua o valor do <storage-account-key> marcador de posição pela chave de conta da sua conta de armazenamento.

    • Substitua o valor do <container-name> marcador de posição pelo contentor que contém os relatórios de inventário.

    • Substitua o <blob-inventory-file-name> marcador de posição pelo nome completamente qualificado do ficheiro de inventário (por exemplo: 2023/02/02/02-16-17/blobinventory/blobinventory_1000000_0.csv).

    • Se a sua conta tiver um espaço de nomes hierárquico, defina a hierarchical_namespace_enabled variável como True.

  3. Prima as teclas SHIFT + ENTER para executar o código neste bloco.

Obter o tamanho e a contagem de blobs

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

    O bloco de notas apresenta o número de blobs num contentor e o número de bytes ocupados por blobs no contentor.

    Captura de ecrã dos resultados que aparecem quando executa a célula que mostra o número de blobs e o tamanho dos blobs no contentor.

Obter o tamanho e a contagem de instantâneos

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

    O bloco de notas apresenta o número de instantâneos e o número total de bytes ocupados por instantâneos de blobs.

    Captura de ecrã a mostrar os resultados que aparecem quando executa a célula que mostra o número de instantâneos e o tamanho total combinado dos instantâneos.

Obter o tamanho e a contagem de versões

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

    O bloco de notas apresenta o número de versões de blobs e o número total de bytes ocupados por versões de blobs.

    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 a contagem de blobs por tipo de blob

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

    O bloco de notas apresenta o número de tipos de blobs por tipo.

    Captura de ecrã a mostrar os resultados que aparecem quando executa a célula que mostra o número de tipos de blobs por tipo.

Obter a contagem de blobs por tipo de conteúdo

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

    O bloco de notas apresenta o número de blobs associados a cada tipo de conteúdo.

    Captura de ecrã a mostrar os resultados que aparecem quando executa a célula que mostra o número de blobs por tipo de conteúdo.

Terminar o cluster

Para evitar faturação desnecessária, certifique-se de que termina o cluster. Veja Terminar um cluster.

Passos seguintes