Sdílet prostřednictvím


Kurz 1. část: Ingestování dat do Microsoft Fabric Lakehouse pomocí Apache Sparku

V tomto kurzu budete ingestovat data do Fabric Lakehouses ve formátu Delta Lake. Některé důležité termíny, které je potřeba pochopit:

  • Lakehouse – Lakehouse je kolekce souborů, složek a tabulek, které představují databázi pro datové jezero využívané engine Spark a engine SQL pro zpracování velkých objemů dat, a zahrnuje vylepšené schopnosti pro ACID transakce při použití tabulek ve formátu open-source Delta.

  • Delta Lake – Delta Lake je opensourcová vrstva úložiště, která přináší transakce ACID, škálovatelnou správu metadat a dávkové a streamované zpracování dat do Apache Sparku. Tabulka Delta Lake je formát datové tabulky, který 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é můžete použít k přidání funkcí specifických pro scénáře do řešení strojového učení pro přesnější modely. Otevřené datové sady jsou v cloudu v Microsoft Azure Storage a různé metody mohou k datům přistupovat, včetně Apache Sparku, REST API, Data Factory a dalších nástrojů.

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

Sledujte v poznámkovém bloku

1-ingest-data.ipynb je poznámkový blok, který doprovází tento kurz.

Data o odchodu zákazníků banky

Datová sada obsahuje stav odchodu 10 000 zákazníků. Obsahuje také atributy, které by mohly mít vliv na četnost změn, například:

  • Skóre kreditu
  • Zeměpisné umístění (Německo, Francie, Španělsko)
  • Pohlaví (muž, žena)
  • Věk
  • Doba trvání (roky jako zákazník banky)
  • 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 nebo ne)
  • Stav aktivního člena (bez ohledu na to, jestli zákazník aktivní banky nebo ne)

Datová sada obsahuje také sloupce, jako je číslo řádku, ID zákazníka a příjmení zákazníka, které by neměly mít žádný vliv na rozhodnutí zákazníka opustit banku.

Událost, která definuje odchod zákazníka, je uzavření jeho bankovního účtu. Sloupec exited v datové sadě odkazuje na opuštění zákazníka. K těmto atributům není k dispozici mnoho kontextu, takže musíte pokračovat bez informací o datové sadě na pozadí. Cílem je pochopit, jak tyto atributy přispívají ke stavu exited.

Ukázkové řádky z datové sady:

"CustomerID" (ID zákazníka) "Příjmení" "CreditScore" "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

Tip

Definováním následujících parametrů 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

Tento kód stáhne veřejně dostupnou verzi datové sady a pak ji uloží do objektu Fabric Lakehouse.

Důležitý

Než ho spustíte, nezapomeňte do poznámkového bloku přidat lakehouse. 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.blob.core.windows.net/public/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ě ingestují: