Freigeben über


Lernprogramm Teil 1: Aufnehmen von Daten in ein Microsoft Fabric Lakehouse mit Apache Spark

In diesem Tutorial erfassen Sie Daten im Delta Lake-Format in Fabric-Lakehouses. Einige wichtige Begriffe, die Sie verstehen sollten:

  • Lakehouse: Ein Lakehouse ist eine Sammlung von Dateien, Ordnern und Tabellen, die eine Datenbank über einem Data Lake darstellt, der von der Spark-Engine und der SQL-Engine für die Big Data-Verarbeitung verwendet wird, und die erweiterte Funktionen für ACID-Transaktionen bei Verwendung der formatierten Open-Source-Delta-Tabellen enthält.

  • Delta Lake - Delta Lake ist eine Open Source Speicherebene, die ACID-Transaktionen, eine skalierbare Metadatenverwaltung sowie Batch- und Streaming-Datenverarbeitung für Apache Spark bietet. Eine Delta Lake-Tabelle ist ein Datentabellenformat, das Parquet-Datendateien mit einem dateibasierten Transaktionsprotokoll für ACID-Transaktionen und eine skalierbare Metadatenverwaltung erweitert.

  • Azure Open Datasets sind kuratierte öffentliche Datasets, mit denen Sie szenariospezifische Features zu Machine Learning-Lösungen für genauere Modelle hinzufügen können. Offene Datasets befinden sich in der Cloud in Microsoft Azure Storage und können über verschiedene Methoden wie Apache Spark, REST-API, Data Factory und andere Tools aufgerufen werden.

In diesem Lernprogramm verwenden Sie den Apache Spark für:

  • Lesen von Daten aus Azure Open Datasets-Containern.
  • Schreiben von Daten in die Delta-Tabelle eines Fabric-Lakehouse

Voraussetzungen

Notebook für das Tutorial

1-ingest-data.ipynb ist das Notebook, das dieses Tutorial begleitet.

Kundenschwunddaten der Bank

Das Dataset enthält den Abwanderungsstatus von 10.000 Kunden. Es enthält zudem Attribute, die sich auf die Abwanderung auswirken können, z. B.:

  • Kreditwürdigkeit
  • Geografischer Standort (Deutschland, Frankreich, Spanien)
  • Geschlecht (männlich, weiblich)
  • Alter
  • Dauer (Jahre als Bankkunde)
  • Kontostand
  • Geschätztes Gehalt
  • Anzahl der Produkte, die ein Kunde über die Bank erworben hat
  • Kreditkartenstatus (ob ein Kunde über eine Kreditkarte verfügt oder nicht)
  • Status eines aktiven Mitglieds (unabhängig davon, ob der Kunde einer aktiven Bank ist oder nicht)

Das Dataset enthält auch Spalten wie Zeilennummer, Kunden-ID und Kundenname, die keine Auswirkungen auf die Entscheidung des Kunden haben sollten, die Bank zu verlassen.

Das Ereignis, das die Abwanderung des Kunden definiert, ist das Schließen des Bankkontos des Kunden. Die Spalte exited im Datensatz bezieht sich auf die Abwanderung von Kunden. Es steht nicht viel Kontext zu diesen Attributen zur Verfügung, sodass Sie fortfahren müssen, ohne Hintergrundinformationen zum Dataset zu haben. Ziel ist es zu verstehen, wie diese Attribute zum exited Status beitragen.

Beispielzeilen aus dem Dataset:

"CustomerID" "Nachname" „CreditScore“ "Geographie" "Geschlecht" Alter „Tenure“ Gleichgewicht AnzahlDerProdukte „HasCrCard“ „IsActiveMember“ Geschätztes Gehalt „Exited“
15634602 Hargrave 619 Frankreich Weiblich 42 2 0,00 1 1 1 101348.88 1
15647311 Hügel 608 Spanien Weiblich 41 1 83807.86 1 0 1 112542.58 0

Dataset herunterladen und in das Lakehouse hochladen

Tipp

Indem Sie die folgenden Parameter definieren, können Sie dieses Notizbuch ganz einfach mit verschiedenen Datasets verwenden.

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

Dieser Code lädt eine öffentlich verfügbare Version des Datasets herunter und speichert sie dann in einem Fabric Lakehouse.

Wichtig

Fügen Sie ein Lakehouse zum Notebook hinzu, bevor Sie es ausführen. Andernfalls tritt ein Fehler auf.

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

Sie verwenden die Daten, die Sie gerade aufgenommen haben: