Sdílet prostřednictvím


Kurz: Výpočet statistik kontejnerů pomocí Databricks

V tomto kurzu se dozvíte, jak shromažďovat statistiky o kontejnerech pomocí Azure Blob Storage inventáře společně s Azure Databricks.

V tomto kurzu se naučíte:

  • Vygenerování sestavy inventáře
  • Vytvoření pracovního prostoru, clusteru a poznámkového bloku Azure Databricks
  • Čtení souboru inventáře objektů blob
  • Získání počtu a celkové velikosti objektů blob, snímků a verzí
  • Získání počtu objektů blob podle typu objektu blob a typu obsahu

Požadavky

Vygenerování sestavy inventáře

Povolte pro svůj účet úložiště sestavy inventáře objektů blob. Viz Povolení sestav inventáře objektů blob služby Azure Storage.

Použijte následující nastavení konfigurace:

Nastavení Hodnota
Název pravidla objekt blobinventory
Kontejner <název kontejneru>
Typ objektu do inventáře Objekt blob
Typy objektů blob Objekty blob bloku, objekty blob stránky a doplňovací objekty blob
Podtypy zahrnout verze objektů blob, zahrnout snímky, zahrnout odstraněné objekty blob
Pole inventáře objektů blob Vše
Četnost zásob Každý den
Formát exportu CSV

Po povolení sestav inventáře možná budete muset počkat až 24 hodin, než se vygeneruje první sestava.

Konfigurace Azure Databricks

V této části vytvoříte pracovní prostor, cluster a poznámkový blok Azure Databricks. Později v tomto kurzu vložíte fragmenty kódu do buněk poznámkového bloku a pak je spustíte, abyste shromáždili statistiky kontejneru.

  1. Vytvořte pracovní prostor Azure Databricks. Viz Vytvoření pracovního prostoru Azure Databricks.

  2. Vytvořte cluster. Viz Vytvoření clusteru.

  3. Vytvořte poznámkový blok a jako výchozí jazyk poznámkového bloku zvolte Python. Viz Vytvoření poznámkového bloku.

Čtení souboru inventáře objektů blob

  1. Zkopírujte a vložte následující blok kódu do první buňky, ale tento kód ještě nespusoučte.

    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. V tomto bloku kódu nahraďte následující hodnoty:

    • <storage-account-name> Zástupnou hodnotu nahraďte názvem vašeho účtu úložiště.

    • <storage-account-key> Zástupnou hodnotu nahraďte klíčem účtu vašeho účtu úložiště.

    • <container-name> Zástupnou hodnotu nahraďte kontejnerem, který obsahuje sestavy inventáře.

    • <blob-inventory-file-name> Zástupný symbol nahraďte plně kvalifikovaným názvem souboru inventáře (například: 2023/02/02/02-16-17/blobinventory/blobinventory_1000000_0.csv).

    • Pokud má váš účet hierarchický obor názvů, nastavte proměnnou hierarchical_namespace_enabled na True.

  3. Stisknutím kláves SHIFT + ENTER spusťte kód v tomto bloku.

Získání počtu a velikosti objektů blob

  1. Do nové buňky vložte následující kód:

    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. Stisknutím kláves SHIFT + ENTER spusťte buňku.

    Poznámkový blok zobrazí počet objektů blob v kontejneru a počet bajtů, které objekty blob v kontejneru zabírají.

    Snímek obrazovky s výsledky, které se zobrazí při spuštění buňky s počtem objektů blob a velikostí objektů blob v kontejneru

Získání počtu a velikosti snímků

  1. Do nové buňky vložte následující kód:

    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. Stisknutím kláves SHIFT + ENTER spusťte buňku.

    Poznámkový blok zobrazuje počet snímků a celkový počet bajtů obsazených snímky objektů blob.

    Snímek obrazovky s výsledky, které se zobrazí, když spustíte buňku s počtem snímků a celkovou kombinovanou velikostí snímků

Získání počtu a velikosti verzí

  1. Do nové buňky vložte následující kód:

    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. Stisknutím kláves SHIFT + ENTER spusťte buňku.

    Poznámkový blok zobrazuje počet verzí objektů blob a celkový počet bajtů obsazených verzemi objektů blob.

    Snímek obrazovky s výsledky, které se zobrazí při spuštění buňky s počtem verzí a celkovou kombinovanou velikostí verzí

Získání počtu objektů blob podle typu objektu blob

  1. Do nové buňky vložte následující kód:

    display(df.groupBy('BlobType').count().withColumnRenamed("count", "Total number of blobs in the container by BlobType"))
    
  2. Stisknutím kláves SHIFT + ENTER spusťte buňku.

    Poznámkový blok zobrazuje počet typů objektů blob podle typu.

    Snímek obrazovky s výsledky, které se zobrazí při spuštění buňky s počtem typů objektů blob podle typu

Získání počtu objektů blob podle typu obsahu

  1. Do nové buňky vložte následující kód:

    display(df.groupBy('Content-Type').count().withColumnRenamed("count", "Total number of blobs in the container by Content-Type"))
    
  2. Stisknutím kláves SHIFT + ENTER spusťte buňku.

    Poznámkový blok zobrazí počet objektů blob přidružených k jednotlivým typům obsahu.

    Snímek obrazovky s výsledky, které se zobrazí při spuštění buňky zobrazující počet objektů blob podle typu obsahu

Ukončení clusteru

Abyste se vyhnuli zbytečné fakturaci, nezapomeňte cluster ukončit. Viz Ukončení clusteru.

Další kroky