Руководство. Вычисление статистики контейнеров с помощью Databricks
В этом руководстве показано, как собирать статистику о контейнерах с помощью Хранилище BLOB-объектов Azure инвентаризации вместе с Azure Databricks.
В этом руководстве описано следующее:
- Создание отчета инвентаризации
- Создание рабочей области Azure Databricks и записной книжки
- Чтение файла инвентаризации BLOB-объектов
- Получение количества и общего размера больших двоичных объектов, моментальных снимков и версий
- Получение количества БОЛЬШИХ двоичных объектов по типу BLOB-объектов и типу контента
Необходимые компоненты
Подписка Azure— создание учетной записи бесплатно
Учетная запись хранения Azure — создание учетной записи хранения
Убедитесь, что удостоверение пользователя назначено роли участника данных BLOB-объектов хранилища.
Создание отчета инвентаризации
Включите отчеты инвентаризации BLOB-объектов для учетной записи хранения. См. раздел "Включить служба хранилища Azure отчеты инвентаризации BLOB-объектов".
Используйте следующие параметры конфигурации.
Параметр | Значение |
---|---|
Имя правила | Blobinventory |
Контейнер | <имя контейнера> |
Тип объектов для инвентаризации | BLOB-объект |
Типы 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
.
Нажмите кнопку "Выполнить", чтобы запустить код в этой ячейке.
Получение количества и размера 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)'])
Нажмите кнопку запуска, чтобы запустить ячейку.
Записная книжка отображает количество больших двоичных объектов в контейнере и количество байтов, занятых большими двоичными объектами в контейнере.
Получение количества моментальных снимков и размера
В новой ячейке вставьте следующий код:
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)'])
Нажмите кнопку запуска, чтобы запустить ячейку.
Записная книжка отображает количество моментальных снимков и общее количество байтов, занятых моментальными снимками 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-объектов по типу 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+ ВВОД, чтобы запустить ячейку.
В записной книжке отображается количество больших двоичных объектов, связанных с каждым типом контента.
Завершение кластера
Чтобы избежать ненужных выставления счетов, завершите вычислительный ресурс. См . завершение вычисления.
Следующие шаги
Узнайте, как использовать Azure Synapse для вычисления количества BLOB-объектов и общего размера больших двоичных объектов на контейнер. См. раздел "Вычисление количества BLOB-объектов" и общего размера для каждого контейнера с помощью инвентаризации служба хранилища Azure
Узнайте, как создавать и визуализировать статистику, описывающую контейнеры и большие двоичные объекты. См . руководство по анализу отчетов инвентаризации BLOB-объектов
Узнайте о способах оптимизации затрат на основе анализа больших двоичных объектов и контейнеров. См. следующие статьи:
Планирование затрат и управление ими для Хранилища BLOB-объектов Azure
Оценка стоимости архивирования данных
Оптимизация затрат путем автоматического управления жизненным циклом данных