Поделиться через


Руководство. Вычисление статистики контейнеров с помощью Databricks

В этом руководстве показано, как собирать статистику о контейнерах с помощью Хранилище BLOB-объектов Azure инвентаризации вместе с Azure Databricks.

В этом руководстве описано следующее:

  • Создание отчета инвентаризации
  • Создание рабочей области Azure Databricks и записной книжки
  • Чтение файла инвентаризации BLOB-объектов
  • Получение количества и общего размера больших двоичных объектов, моментальных снимков и версий
  • Получение количества БОЛЬШИХ двоичных объектов по типу BLOB-объектов и типу контента

Необходимые компоненты

Создание отчета инвентаризации

Включите отчеты инвентаризации BLOB-объектов для учетной записи хранения. См. раздел "Включить служба хранилища Azure отчеты инвентаризации BLOB-объектов".

Используйте следующие параметры конфигурации.

Параметр Значение
Имя правила Blobinventory
Контейнер <имя контейнера>
Тип объектов для инвентаризации BLOB-объект
Типы BLOB-объектов Блочные BLOB-объекты, страничные BLOB-объекты и большие двоичные объекты
Подтипы включение версий BLOB-объектов, включение моментальных снимков, включение удаленных BLOB-объектов
Поля инвентаризации BLOB-объектов Все
Частота инвентаризации Ежедневно
Формат экспорта CSV

Возможно, вам придется ждать до 24 часов после включения отчетов инвентаризации для создания первого отчета.

Настройка Azure Databricks

В этом разделе описано, как создать рабочую область Azure Databricks и записную книжку. Далее в этом руководстве вы вставьте фрагменты кода в ячейки записной книжки, а затем запустите их для сбора статистики контейнеров.

  1. Создайте рабочую область Azure Databricks. См. статью "Создание рабочей области Azure Databricks".

  2. Создайте новую записную книжку. См. статью "Создание записной книжки".

  3. Выберите Python в качестве языка записной книжки по умолчанию.

Чтение файла инвентаризации BLOB-объектов

  1. Скопируйте и вставьте следующий блок кода в первую ячейку, но не запускайте этот код.

    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. В этом блоке кода замените следующие значения:

    • Замените значение заполнителя <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.

  3. Нажмите кнопку "Выполнить", чтобы запустить код в этой ячейке.

Получение количества и размера BLOB-объектов

  1. В новой ячейке вставьте следующий код:

    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. Нажмите кнопку запуска, чтобы запустить ячейку.

    Записная книжка отображает количество больших двоичных объектов в контейнере и количество байтов, занятых большими двоичными объектами в контейнере.

    Снимок экрана: результаты, отображаемые при запуске ячейки с количеством больших двоичных объектов и размером больших двоичных объектов в контейнере.

Получение количества моментальных снимков и размера

  1. В новой ячейке вставьте следующий код:

    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. Нажмите кнопку запуска, чтобы запустить ячейку.

    Записная книжка отображает количество моментальных снимков и общее количество байтов, занятых моментальными снимками BLOB-объектов.

    Снимок экрана: результаты, отображаемые при запуске ячейки с количеством моментальных снимков и общим объединенным размером моментальных снимков.

Получение количества версий и размера

  1. В новой ячейке вставьте следующий код:

    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. Нажмите клавиши SHIFT+ ВВОД, чтобы запустить ячейку.

    В записной книжке отображается количество версий BLOB-объектов и общее количество байтов, занятых версиями BLOB-объектов.

    Снимок экрана: результаты, отображаемые при запуске ячейки с количеством версий и общим общим размером версий.

Получение количества BLOB-объектов по типу BLOB-объектов

  1. В новой ячейке вставьте следующий код:

    display(df.groupBy('BlobType').count().withColumnRenamed("count", "Total number of blobs in the container by BlobType"))
    
  2. Нажмите клавиши SHIFT+ ВВОД, чтобы запустить ячейку.

    Записная книжка отображает количество типов BLOB-объектов по типу.

    Снимок экрана: результаты, отображаемые при запуске ячейки с количеством типов BLOB-объектов по типу.

Получение количества BLOB-объектов по типу контента

  1. В новой ячейке вставьте следующий код:

    display(df.groupBy('Content-Type').count().withColumnRenamed("count", "Total number of blobs in the container by Content-Type"))
    
  2. Нажмите клавиши SHIFT+ ВВОД, чтобы запустить ячейку.

    В записной книжке отображается количество больших двоичных объектов, связанных с каждым типом контента.

    Снимок экрана: результаты, отображаемые при запуске ячейки с количеством БОЛЬШИХ двоичных объектов по типу контента.

Завершение кластера

Чтобы избежать ненужных выставления счетов, завершите вычислительный ресурс. См . завершение вычисления.

Следующие шаги