分享方式:


教學課程:使用 Databricks 計算容器統計資料

本教學課程說明如何使用 Azure Blob 儲存體詳細目錄和 Azure Databricks 來收集容器的相關統計資料。

在本教學課程中,您會了解如何:

  • 產生詳細目錄報告
  • 建立 Azure Databricks 工作區、叢集和筆記本
  • 讀取 Blob 詳細目錄檔案
  • 取得 Blob、快照集和版本的數目和大小總計
  • 依 Blob 類型和內容類型取得 Blob 數目

必要條件

產生詳細目錄報告

啟用儲存體帳戶的 Blob 詳細目錄報告。 請參閱啟用 Azure 儲存體 Blob 詳細目錄報告

使用下列組態設定:

設定
規則名稱 blobinventory
容器 <容器的名稱>
要清查的物件類型 Blob
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. 按 SHIFT + ENTER 鍵以執行此區塊中的程式碼。

取得 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 + ENTER 以執行資料格。

    筆記本會顯示容器中的 Blob 數目,以及容器中 Blob 所佔用的位元組數目。

    Screenshot of results that appear when you run the cell showing the number of blobs and the size of blobs in the container.

取得快照集計數和大小

  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 + ENTER 以執行資料格。

    筆記本會顯示 Blob 快照集所佔用的快照集數目和位元組總數。

    Screenshot of results that appear when you run the cell showing the number of snapshots and the total combined size of snapshots.

取得版本計數和大小

  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 + ENTER 以執行資料格。

    筆記本會顯示 Blob 版本所佔用的 Blob 版本數目和位元組總數。

    Screenshot of results that appear when you run the cell showing the number of versions and the total combined size of versions.

依 Blob 類型取得 Blob 計數

  1. 在新的資料格中貼上下列程式碼:

    display(df.groupBy('BlobType').count().withColumnRenamed("count", "Total number of blobs in the container by BlobType"))
    
  2. 按 SHIFT + ENTER 以執行資料格。

    筆記本會依類型顯示 Blob 類型的數目。

    Screenshot of results that appear when you run the cell showing the number of blob types by type.

依內容類型取得 Blob 計數

  1. 在新的資料格中貼上下列程式碼:

    display(df.groupBy('Content-Type').count().withColumnRenamed("count", "Total number of blobs in the container by Content-Type"))
    
  2. 按 SHIFT + ENTER 以執行資料格。

    筆記本會顯示與每個內容類型相關聯的 Blob 數目。

    Screenshot of results that appear when you run the cell showing the number of blobs by content-type.

終止叢集

若要避免不必要的計費,請務必終止叢集。 請參閱終止叢集

下一步