Руководство по вычислению статистики контейнера с помощью Databricks
В этом руководстве показано, как собирать статистику о контейнерах с помощью Хранилище BLOB-объектов Azure инвентаризации вместе с Azure Databricks.
В этом руководстве описано следующее:
- Создание отчета об инвентаризации
- Создание рабочей области, кластера и записной книжки Azure Databricks
- Чтение файла инвентаризации BLOB-объектов
- Получение количества и общего размера BLOB-объектов, моментальных снимков и версий
- Получение количества BLOB-объектов по типу большого двоичного объекта и типу контента
Предварительные требования
Подписка Azure — создание учетной записи бесплатно
Учетная запись хранения Azure — создание учетной записи хранения
Убедитесь, что удостоверению пользователя назначена роль участника данных BLOB-объектов хранилища .
Создание отчета об инвентаризации
Включите отчеты инвентаризации BLOB-объектов для учетной записи хранения. См . статью Включение отчетов об инвентаризации BLOB-объектов службы хранилища Azure.
Используйте следующие параметры конфигурации.
Параметр | Значение |
---|---|
Имя правила | blobinventory |
Контейнер | <имя контейнера> |
Тип объекта для инвентаризации | BLOB-объект |
Типы BLOB-объектов | Блочные, страничные и добавочные BLOB-объекты |
Подтипы | включить версии BLOB-объектов, включить моментальные снимки, включить удаленные BLOB-объекты |
Поля инвентаризации BLOB-объектов | Все |
Частота инвентаризации | Ежедневно |
Формат экспорта | CSV |
Для создания первого отчета может потребоваться подождать до 24 часов после включения отчетов инвентаризации.
Настройка Azure Databricks
В этом разделе описано, как создать рабочую область, кластер и записную книжку Azure Databricks. Далее в этом руководстве вы вставьте фрагменты кода в ячейки записной книжки, а затем выполните их для сбора статистики контейнеров.
создание рабочей области Azure Databricks; См . статью Создание рабочей области Azure Databricks.
Создание кластера. См. Создание кластера.
Создайте записную книжку и выберите язык Python по умолчанию для записной книжки. См . статью Создание записной книжки.
Чтение файла инвентаризации BLOB-объектов
Скопируйте и вставьте следующий блок кода в первую ячейку, но не запускайте этот код.
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')
В этом блоке кода замените следующие значения:
Замените значение заполнителя
<storage-account-name>
именем вашей учетной записи хранения.Замените
<storage-account-key>
значение заполнителя ключом учетной записи хранения.Замените
<container-name>
значение заполнителя контейнером, который содержит отчеты инвентаризации.Замените
<blob-inventory-file-name>
заполнитель полным именем файла инвентаризации (например,2023/02/02/02-16-17/blobinventory/blobinventory_1000000_0.csv
).Если у вашей учетной записи есть иерархическое пространство имен, задайте для переменной
hierarchical_namespace_enabled
значениеTrue
.
Нажмите клавиши SHIFT + ВВОД, чтобы запустить код в этом блоке.
Получение количества и размера BLOB-объектов
В новую ячейку вставьте следующий код:
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)'])
Нажмите клавиши SHIFT+ВВОД, чтобы запустить ячейку.
Записная книжка отображает количество BLOB-объектов в контейнере и количество байтов, занятых BLOB-объектами в контейнере.
Получение количества и размера моментальных снимков
В новую ячейку вставьте следующий код:
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)'])
Нажмите клавиши SHIFT+ВВОД, чтобы запустить ячейку.
Записная книжка отображает количество моментальных снимков и общее количество байтов, занятых моментальными снимками BLOB-объектов.
Получение количества версий и размера
В новую ячейку вставьте следующий код:
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)'])
Нажмите клавиши SHIFT+ВВОД, чтобы запустить ячейку.
В записной книжке отображается количество версий BLOB-объектов и общее количество байтов, занятых версиями BLOB-объектов.
Получение количества BLOB-объектов по типу большого двоичного объекта
В новую ячейку вставьте следующий код:
display(df.groupBy('BlobType').count().withColumnRenamed("count", "Total number of blobs in the container by BlobType"))
Нажмите клавиши SHIFT+ВВОД, чтобы запустить ячейку.
В записной книжке отображается количество типов BLOB-объектов по типу.
Получение количества BLOB-объектов по типу контента
В новую ячейку вставьте следующий код:
display(df.groupBy('Content-Type').count().withColumnRenamed("count", "Total number of blobs in the container by Content-Type"))
Нажмите клавиши SHIFT+ВВОД, чтобы запустить ячейку.
В записной книжке отображается количество BLOB-объектов, связанных с каждым типом контента.
Завершение работы кластера
Чтобы избежать ненужного выставления счетов, обязательно завершите работу кластера. См . раздел Завершение работы кластера.
Дальнейшие действия
Узнайте, как использовать Azure Synapse для вычисления количества BLOB-объектов и общего размера BLOB-объектов на контейнер. См. статью Вычисление количества и общего размера BLOB-объектов на контейнер с помощью инвентаризации службы хранилища Azure.
Узнайте, как создавать и визуализировать статистику, описывающую контейнеры и BLOB-объекты. См. руководство по анализу отчетов инвентаризации BLOB-объектов.
Узнайте о способах оптимизации затрат на основе анализа больших двоичных объектов и контейнеров. См. следующие статьи:
Планирование затрат и управление ими для Хранилища BLOB-объектов Azure
Оценка затрат на архивацию данных
Оптимизация затрат путем автоматического управления жизненным циклом данных