Del via


Selvstudium del 1: Brug Apache Spark til at indtage data i et Microsoft Fabric lakehouse

I dette selvstudium overføres data til Fabric lakehouses i delta lake-format. Vi definerer nogle vigtige begreber her:

  • Lakehouse – Et lakehouse er en samling filer, mapper og/eller tabeller, der repræsenterer en database over en datasø. Spark-programmet og SQL-programmet bruger lakehouse-ressourcer til big data-behandling. Når du bruger Delta-formaterede tabeller med åben kildekode, omfatter denne behandling forbedrede ACID-transaktionsegenskaber.

  • Delta Lake – Delta Lake er et lagerlag med åben kildekode, der leverer ACID-transaktioner, skalerbar metadataadministration og batch- og streamingdatabehandling til Apache Spark. Som datatabelformat udvider Delta Lake Parquet-datafiler med en filbaseret transaktionslog for ACID-transaktioner og skalerbar metadataadministration.

  • Azure Open Datasets er organiserede offentlige datasæt, der føjer scenariespecifikke funktioner til løsninger til maskinel indlæring. Dette fører til mere nøjagtige modeller. Open Datasets er cloudressourcer, der er placeret på Microsoft Azure Storage. Apache Spark, REST API, Data factory og andre værktøjer kan få adgang til Open Datasets.

I dette selvstudium skal du bruge Apache Spark til at:

  • Læs data fra Azure Open Datasets-objektbeholdere.
  • Skriv data til en Fabric lakehouse-deltatabel.

Forudsætninger

  • Føj et lakehouse til denne notesbog. I dette selvstudium downloader du først data fra en offentlig blob. Derefter gemmes dataene i den pågældende lakehouse-ressource.

Følg med i en notesbog

Notesbogen 1-ingest-data.ipynb følger med dette selvstudium.

Bankafgangsdata

Datasættet indeholder statusoplysninger for 10.000 kunder. Den indeholder også attributter, der kan påvirke fald – f.eks.:

  • Kreditscore
  • Geografisk placering (Tyskland, Frankrig, Spanien)
  • Køn (mand, kvinde)
  • Alder
  • Ansættelse (det antal år, kunden var kunde i den pågældende bank)
  • Kontosaldo
  • Anslået løn
  • Antal produkter, som en kunde har købt via banken
  • Kreditkortstatus (uanset om en kunde har et kreditkort eller ej)
  • Aktiv medlemsstatus (uanset om kunden har en aktiv bankkundestatus)

Datasættet indeholder også disse kolonner:

  • rækkenummer
  • kunde-id
  • kundens efternavn

Disse kolonner bør ikke have nogen indflydelse på en kundes beslutning om at forlade banken.

Lukningen af en debitorbankkonto definerer kundens opsigelse. Datasætkolonnen exited refererer til kundens opgivelse. Der er kun lidt kontekst om disse attributter tilgængelige, så du skal fortsætte uden baggrundsoplysninger om datasættet. Vores mål er at forstå, hvordan disse attributter bidrager til exited status.

Eksempel på rækker i datasæt:

"Kunde-id" "Efternavn" "CreditScore" "Geografi" "Køn" "Alder" "Ansættelse" "Saldo" "NumOfProducts" "HasCrCard" "IsActiveMember" "EstimatedSalary" "Afsluttet"
15634602 Hargrave 619 Frankrig Kvindelig 42 2 0.00 0 0 0 101348.88 0
15647311 Bakke 608 Spanien Kvindelig 41 0 83807.86 0 0 0 112542.58 0

Download datasæt, og upload til lakehouse

Drikkepenge

Når du definerer følgende parametre, kan du nemt bruge denne notesbog med forskellige datasæt:

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ølgende kodestykke downloader en offentligt tilgængelig version af datasættet og gemmer derefter ressourcen i et Fabric lakehouse:

Vigtig

Sørg for at føje et lakehouse til notesbogen, før du kører den. Hvis du ikke gør det, resulterer det i en fejl.

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 bruger de data, du lige har indtaget i: