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


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

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

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

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

Предварительные требования

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

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

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

Параметр Значение
Имя правила blobinventory
Контейнер <имя контейнера>
Тип объекта для инвентаризации 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. Нажмите клавиши SHIFT + ВВОД, чтобы запустить код в этом блоке.

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

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

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

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

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

    Записная книжка отображает количество моментальных снимков и общее количество байтов, занятых моментальными снимками 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-объектов по типу большого двоичного объекта

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

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

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

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

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

Дальнейшие действия