Sdílet prostřednictvím


Kurz 1. část: Použití Apache Sparku k ingestování dat do Microsoft Fabric Lakehouse

Tento kurz nahrává data do objektů Fabric Lakehouse ve formátu Delta Lake. Tady definujeme některé důležité termíny:

  • Lakehouse je kolekce souborů, složek a / nebo tabulek, které představují databázi v datovém jezeře. Modul Spark a modul SQL používají prostředky Lakehouse ke zpracování velkých objemů dat. Pokud používáte tabulky ve formátu Delta typu open-source, zpracování zahrnuje vylepšené schopnosti transakcí ACID.

  • Delta Lake – Delta Lake je opensourcová vrstva úložiště, která do Apache Sparku přináší transakce ACID, škálovatelnou správu metadat a dávkové a streamované zpracování dat. Delta Lake jako formát tabulky dat rozšiřuje datové soubory Parquet pomocí transakčního protokolu založeného na souborech pro transakce ACID a škálovatelnou správu metadat.

  • Azure Open Datasets jsou kurátorované veřejné datové sady, které do řešení strojového učení přidávají funkce specifické pro konkrétní scénáře. To vede k přesnějším modelům. Otevřené datové sady jsou cloudové prostředky, které se nacházejí ve službě Microsoft Azure Storage. Apache Spark, REST API, Data Factory a další nástroje mají přístup k Open Datasets.

V tomto kurzu použijete Apache Spark k:

  • Čtení dat z kontejnerů Azure Open Datasets
  • Zapisujte data do tabulky Delta v systému Fabric Lakehouse.

Požadavky

  • Přidejte do tohoto poznámkového bloku lakehouse. V tomto kurzu nejprve stáhnete data z veřejného blobu. Poté jsou data uložena v daném prostředku lakehouse.

Sledujte pomocí poznámkového bloku

Tento kurz doprovází poznámkový blok 1-ingest-data.ipynb.

Data o odchodu zákazníků banky

Datová sada obsahuje informace o stavu odchodu pro 10 000 zákazníků. Obsahuje také atributy, které by mohly ovlivnit četnost změn – například:

  • Skóre kreditu
  • Zeměpisné umístění (Německo, Francie, Španělsko)
  • Pohlaví (muž, žena)
  • Věk
  • Výdrž (počet let, po které byl zákazník klientem v dané bance)
  • Zůstatek na účtu
  • Odhadovaný plat
  • Počet produktů zakoupených zákazníkem prostřednictvím banky
  • Stav platební karty (bez ohledu na to, jestli má zákazník platební kartu)
  • Stav aktivního člena (bez ohledu na to, jestli má zákazník aktivní stav zákazníka banky)

Datová sada obsahuje také tyto sloupce:

  • číslo řádku
  • ID zákazníka
  • příjmení zákazníka

Tyto sloupce by neměly mít žádný vliv na rozhodnutí zákazníka, aby opustil banku.

Uzavření bankovního účtu zákazníka znamená ztrátu tohoto zákazníka. Sloupec datové sady exited odkazuje na opuštění zákazníka. K dispozici je malý kontext těchto atributů, takže musíte pokračovat bez informací o datové sadě. Naším cílem je pochopit, jak tyto atributy přispívají ke exited stavu.

Ukázkové řádky datové sady:

"CustomerID" (ID zákazníka) "Příjmení" Kreditní skóre "Zeměpisná oblast" "Pohlaví" "Věk" "Výdrž" Rovnováha PočetProduktů "HasCrCard" JeAktivníČlen Odhadovaný plat "Ukončeno"
15634602 Hargrave 619 Francie Žena 42 2 0.00 1 1 1 101348.88 1
15647311 Kopec 608 Španělsko Žena 41 1 83807.86 1 0 1 112542.58 0

Stažení datové sady a nahrání do Lakehousu

Návod

Když definujete následující parametry, můžete tento poznámkový blok snadno použít s různými datovými sadami:

IS_CUSTOM_DATA = False  # if TRUE, dataset has to be uploaded manually

DATA_ROOT = "/lakehouse/default"
DATA_FOLDER = "Files/churn"  # folder with data files
DATA_FILE = "churn.csv"  # data file name

Následující fragment kódu stáhne veřejně dostupnou verzi datové sady a pak tento prostředek uloží do objektu Fabric Lakehouse:

Důležitý

Ujistěte se, že do poznámkového bloku přidáte lakehouse, než ho spustíte. Pokud to neuděláte, dojde k chybě.

import os, requests
if not IS_CUSTOM_DATA:
# Download demo data files into lakehouse if not exist
    remote_url = "https://synapseaisolutionsa.z13.web.core.windows.net/data/bankcustomerchurn"
    file_list = [DATA_FILE]
    download_path = f"{DATA_ROOT}/{DATA_FOLDER}/raw"

    if not os.path.exists("/lakehouse/default"):
        raise FileNotFoundError(
            "Default lakehouse not found, please add a lakehouse and restart the session."
        )
    os.makedirs(download_path, exist_ok=True)
    for fname in file_list:
        if not os.path.exists(f"{download_path}/{fname}"):
            r = requests.get(f"{remote_url}/{fname}", timeout=30)
            with open(f"{download_path}/{fname}", "wb") as f:
                f.write(r.content)
    print("Downloaded demo data files into lakehouse.")

Použijete data, která jste právě nahráli.