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
Uma subscrição do Azure – criar uma conta gratuitamente
Uma conta de armazenamento do Azure – criar uma conta de armazenamento
Certifique-se de que a sua identidade de utilizador tem a função Contribuidor de Dados do Blob de Armazenamento atribuída à mesma.
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.
Criar uma área de trabalho do Azure Databricks. Veja Criar uma área de trabalho do Azure Databricks.
Criar um cluster. Veja Criar um cluster.
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
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')
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 comoTrue
.
Prima as teclas SHIFT + ENTER para executar o código neste bloco.
Obter o tamanho e a contagem de blobs
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)'])
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.
Obter o tamanho e a contagem de instantâneos
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)'])
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.
Obter o tamanho e a contagem de versões
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)'])
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.
Obter a contagem de blobs por tipo de blob
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"))
Prima SHIFT + ENTER para executar a célula.
O bloco de notas apresenta o número de tipos de blobs por tipo.
Obter a contagem de blobs por tipo de conteúdo
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"))
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.
Terminar o cluster
Para evitar faturação desnecessária, certifique-se de que termina o cluster. Veja Terminar um cluster.
Passos seguintes
Saiba como utilizar Azure Synapse para calcular a contagem de blobs e o tamanho total dos blobs por contentor. Veja Calcular a contagem de blobs e o tamanho total por contentor com o inventário do Armazenamento do Azure
Saiba como gerar e visualizar estatísticas que descrevem contentores e blobs. Veja Tutorial: Analisar relatórios de inventário de blobs
Saiba mais sobre formas de otimizar os custos com base na análise dos seus blobs e contentores. Veja estes artigos:
Planear e gerir os custos do Armazenamento de Blobs do Azure
Estimar o custo do arquivo de dados
Otimizar os custos ao gerir automaticamente o ciclo de vida dos dados