Dela via


Självstudie del 1: Använda Apache Spark för att mata in data i ett Microsoft Fabric Lakehouse

I den här handledningen matas data in i Fabric lakehouses i Delta Lake-format. Vi definierar några viktiga termer här:

  • Lakehouse – Ett sjöhus är en samling filer, mappar och/eller tabeller som representerar en databas över en datasjö. Spark-motorn och SQL-motorn använder lakehouse-resurser för bearbetning av stordata. När du använder deltaformaterade tabeller med öppen källkod innehåller bearbetningen förbättrade ACID-transaktionsfunktioner.

  • Delta Lake – Delta Lake är ett lagringslager med öppen källkod som ger ACID-transaktioner, skalbar metadatahantering och bearbetning av batch- och strömmande data till Apache Spark. Som datatabellformat utökar Delta Lake Parquet-datafiler med en filbaserad transaktionslogg för ACID-transaktioner och skalbar metadatahantering.

  • Azure Open Datasets är kurerade offentliga datauppsättningar som lägger till scenariospecifika funktioner i maskininlärningslösningar. Detta leder till mer exakta modeller. Open Datasets är molnresurser som finns i Microsoft Azure Storage. Apache Spark, REST API, Data Factory och andra verktyg har åtkomst till Open Datasets.

I den här självstudien använder du Apache Spark för att:

  • Läsa data från Azure Open Datasets-containrar.
  • Skriv data till en Fabric lakehouse delta-tabell.

Förutsättningar

  • Lägg till ett lakehouse i den här anteckningsboken. I den här självstudien laddar du först ned data från en offentlig blob. Sedan lagras data i den lakehouse-resursen.

Följ med i en anteckningsbok

Notebook-filen 1-ingest-data.ipynb medföljer denna handledning.

Bankomsättningsdata

Datamängden innehåller information om kundavhoppstatus för 10 000 kunder. Den innehåller även attribut som kan påverka omsättning – till exempel:

  • Kreditpoäng
  • Geografiskt läge (Tyskland, Frankrike, Spanien)
  • Kön (man, kvinna)
  • Ålder
  • Kundrelationens längd (antalet år som kunden var kund på banken)
  • Kontosaldo
  • Beräknad lön
  • Antal produkter som en kund har köpt via banken
  • Kreditkortsstatus (oavsett om en kund har ett kreditkort eller inte)
  • Aktiv medlemsstatus (oavsett om kunden har en aktiv bankkundstatus eller inte)

Datamängden innehåller även följande kolumner:

  • radnummer
  • kund-ID
  • kundens efternamn

Dessa kolumner bör inte påverka kundens beslut att lämna banken.

Stängningen av ett kundbankkonto anger kundens bortfall. Datamängdskolumnen exited refererar till kundens övergivande. Lite kontext om dessa attribut är tillgänglig, så du måste fortsätta utan bakgrundsinformation om datauppsättningen. Vårt mål är att förstå hur dessa attribut bidrar till statusen exited .

Exempel på datauppsättningsrader:

"CustomerID" "Efternamn" Kreditvärdighet Geografi Genus "Ålder" "Besittningsrätt" "Saldo" AntalProdukter "HasCrCard" ÄrAktivMedlem Beräknad lön "Avslutad"
15634602 Hargrave 619 Frankrike Kvinnlig 42 2 0,00 1 1 1 101348.88 1
15647311 Kulle 608 Spanien Kvinnlig 41 1 83807.86 1 0 1 112542.58 0

Ladda ner datauppsättningen och ladda upp till lakehouse

Tips

När du definierar följande parametrar kan du enkelt använda den här notebook-filen med olika datauppsättningar:

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

Följande kodexempel laddar ned en publikt tillgänglig version av datamängden och lagrar sedan resursen i en Fabric lakehouse.

Viktig

Se till att du lägger till ett lakehouse i anteckningsblocket innan du kör det. Om du inte gör det resulterar det i ett fel.

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.")

Du använder de data som du just har matat in: