Udostępnij za pomocą


Samouczek, część 1. Używanie platformy Apache Spark do pozyskiwania danych do usługi Microsoft Fabric Lakehouse

W tym samouczku dane są wczytywane do magazynów danych w formacie lakehouse na platformie usługowej Fabric w formacie Delta Lake. Tutaj definiujemy kilka ważnych terminów:

  • Lakehouse — lakehouse to kolekcja plików, folderów i / lub tabel reprezentujących bazę danych w usłudze Data Lake. Silnik Spark i silnik SQL używają zasobów "lakehouse" do przetwarzania big data. W przypadku korzystania z tabel w formacie delta typu open source przetwarzanie obejmuje rozszerzone możliwości transakcji ACID.

  • Delta Lake — usługa Delta Lake to warstwa magazynu typu open source, która zapewnia transakcje ACID, skalowalne zarządzanie metadanymi oraz przetwarzanie danych wsadowych i przesyłanych strumieniowo do platformy Apache Spark. Jako format tabeli danych usługa Delta Lake rozszerza pliki danych Parquet za pomocą dziennika transakcji opartego na plikach na potrzeby transakcji ACID i skalowalnego zarządzania metadanymi.

  • Zestawy danych Usługi Azure Open to wyselekcjonowane publiczne zestawy danych, które dodają funkcje specyficzne dla scenariusza do rozwiązań uczenia maszynowego. Prowadzi to do bardziej dokładnych modeli. Otwarte zestawy danych to zasoby w chmurze, które znajdują się w usłudze Microsoft Azure Storage. Platforma Apache Spark, interfejs API REST, fabryka danych i inne narzędzia mogą uzyskiwać dostęp do otwartych zestawów danych.

W tym samouczku użyjesz platformy Apache Spark do:

  • Odczytywanie danych z kontenerów usługi Azure Open Datasets.
  • Zapisz dane w tabeli delta w lakehouse Fabric.

Warunki wstępne

  • Dodaj lakehouse do tego notesu. W tym samouczku najpierw pobierzesz dane z publicznego zasobu blob. Następnie dane są przechowywane w tym zasobie lakehouse.

Notuj na bieżąco w notesie

Notatnik 1-ingest-data.ipynb towarzyszy temu samouczkowi.

Dane dotyczące odpływu klientów banku

Zestaw danych zawiera informacje o stanie odejścia klientów dla 10 000 klientów. Zawiera również atrybuty, które mogą mieć wpływ na współczynnik zmian — na przykład:

  • Ocena kredytowa
  • Lokalizacja geograficzna (Niemcy, Francja, Hiszpania)
  • Płeć (mężczyzna, kobieta)
  • Wiek
  • Kadencja (liczba lat, w których klient był klientem w tym banku)
  • Saldo konta
  • Szacowane wynagrodzenie
  • Liczba produktów zakupionych przez klienta za pośrednictwem banku
  • Stan karty kredytowej (niezależnie od tego, czy klient ma kartę kredytową)
  • Stan aktywnego członka (bez względu na to, czy klient ma aktywny stan klienta bankowego)

Zestaw danych zawiera również następujące kolumny:

  • numer wiersza
  • identyfikator klienta
  • nazwisko klienta

Te kolumny nie powinny mieć wpływu na decyzję klienta o opuszczeniu banku.

Zamknięcie konta bankowego klienta oznacza utratę tego klienta. Kolumna zestawu danych exited odnosi się do porzucenia klienta. Dostępny jest niewielki kontekst dotyczący tych atrybutów, więc musisz kontynuować bez informacji podstawowych dotyczących zestawu danych. Naszym celem jest zrozumienie, w jaki sposób te atrybuty przyczyniają się do exited stanu.

Przykładowe wiersze zestawu danych:

"CustomerID" "Nazwisko" Ocena kredytowa "Geografia" "Płeć" "Wiek" "Czas użytkowania" "Saldo" LiczbaProduktów "HasCrCard" CzyCzłonekAktywny Szacowana pensja "Zakończono"
15634602 Hargrave 619 Francja Kobieta 42 2 0,00 1 1 1 101348.88 1
15647311 Wzgórze 608 Hiszpania Kobieta 41 1 83807.86 1 0 1 112542.58 0

Pobieranie zestawu danych i przekazywanie do usługi Lakehouse

Wskazówka

Podczas definiowania następujących parametrów można łatwo użyć tego notesu z różnymi zestawami danych:

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

Poniższy fragment kodu pobiera publicznie dostępną wersję zestawu danych, a następnie przechowuje ten zasób w usłudze Fabric lakehouse:

Ważny

Upewnij się, że dodasz lakehouse do notatnika przed jego uruchomieniem. Niepowodzenie w tym celu powoduje wystąpienie błędu.

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

Wykorzystujesz dane, które właśnie pozyskałeś: