Parte 1 dell'esercitazione: inserire dati in un lakehouse di Microsoft Fabric usando Apache Spark

In questa esercitazione verranno inseriti dati in lakehouse di Fabric in formato delta lake. Alcuni termini importanti da comprendere:

  • Lakehouse: un lakehouse è una raccolta di file/cartelle/tabelle che rappresentano un database su un data lake usato dal motore Spark e dal motore SQL per l'elaborazione di big data e che include funzionalità avanzate per le transazioni ACID quando si usano le tabelle con formattazione delta open source.

  • Delta lake: delta lake è un livello di archiviazione open source che offre transazioni ACID, gestione scalabile dei metadati e elaborazione batch e streaming dei dati in Apache Spark. Una tabella delta lake è un formato di tabella dati che estende i file di dati Parquet con un log delle transazioni basato su file per le transazioni ACID e la gestione scalabile dei metadati.

  • I set di dati aperti di Azure includono set di dati pubblici curati utilizzabili per aggiungere caratteristiche specifiche dello scenario alle soluzioni di Machine Learning e realizzare modelli più accurati. I set di dati aperti si trovano nel cloud in Archiviazione di Microsoft Azure e possono essere accessibili da vari metodi, tra cui Apache Spark, API REST, Data factory e altri strumenti.

In questa esercitazione si usa Apache Spark per:

  • Leggere i dati dai contenitori di set di dati aperti di Azure.
  • Scrivere dati in una tabella delta di un lakehouse di Fabric.

Prerequisiti

  • Aggiungere un lakehouse a questo notebook. Si scaricano i dati da un BLOB pubblico, quindi si archiviano i dati nel lakehouse.

Seguire la procedura in Notebook

1-ingest-data.ipynb è il notebook che accompagna questa esercitazione.

Per aprire il notebook di accompagnamento per questa esercitazione, seguire le istruzioni riportate in Preparare il sistema per le esercitazioni di data science per importare il notebook nell'area di lavoro.

Se si preferisce copiare e incollare il codice da questa pagina, è possibile creare un nuovo notebook.

Assicurarsi di collegare un lakehouse al notebook prima di iniziare a eseguire il codice.

Dati di varianza della banca

Il set di dati contiene lo stato di varianza di 10.000 clienti. Include anche attributi che potrebbero influire sulla varianza, ad esempio:

  • Punteggio di credito
  • Posizione geografica (Germania, Francia, Spagna)
  • Genere (maschile, femminile)
  • Età
  • Tenure (anni trascorsi come cliente della banca)
  • Saldo del conto
  • Stipendio stimato
  • Numero di prodotti acquistati da un cliente tramite la banca
  • Stato della carta di credito (se un cliente ha una carta di credito o meno)
  • Stato membro attivo (se il cliente di una banca è attivo o meno)

Il set di dati include anche colonne come il numero di riga, l'ID cliente e il cognome del cliente che non devono avere alcun impatto sulla decisione del cliente di lasciare la banca.

L'evento che definisce la varianza del cliente è la chiusura del conto bancario del cliente. La colonna exited nel set di dati si riferisce all'abbandono del cliente. Non è disponibile molto contesto su questi attributi, quindi è necessario procedere senza avere informazioni di base sul set di dati. L'obiettivo è comprendere come questi attributi contribuiscono allo stato exited.

Righe di esempio del set di dati:

"CustomerID" "Cognome" "Punteggio di credito" "Posizione geografica" "Genere" "Età" "Tenure" "Saldo" "NumDiProdotti" "HaCartaCred" "MembroAtt" "StipendioStim" "Uscita"
15634602 Hargrave 619 Francia Femmina 42 2 0.00 1 1 1 101.348,88 1
15647311 Hill 608 Spagna Femmina 41 1 83.807,86 1 0 1 112.542,58 0

Scaricare il set di dati e caricarlo nel lakehouse

Suggerimento

Definendo i parametri seguenti, è possibile usare facilmente questo notebook con set di dati diversi.

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

Questo codice scarica una versione disponibile pubblicamente del set di dati, quindi la archivia in un lakehouse di Fabric.

Importante

Assicurarsi di aggiungere un lakehouse al notebook prima di eseguirlo. In caso contrario, verrà generato un errore.

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

Verranno usati i dati appena inseriti: