Compartir vía


Tutorial Parte 1: Ingesta de datos en una instancia de Microsoft Fabric Lakehouse mediante Apache Spark

En este tutorial, ingerirá datos en fabric lakehouses en formato delta lake. Algunos términos importantes para comprender:

  • Lakehouse: Un lakehouse es una colección de archivos, carpetas o tablas que representan una base de datos sobre un data lake utilizado por los motores de Spark y SQL para el procesamiento de big data e incluye funcionalidades mejoradas para las transacciones ACID al utilizar tablas en formato Delta de código abierto.

  • Delta Lake: Delta Lake es una capa de almacenamiento de código abierto que aporta transacciones ACID, administración escalable de metadatos y procesamiento de datos por lotes y streaming a Apache Spark. Una tabla de lago Delta es un formato de tabla de datos que extiende archivos de datos Parquet con un registro de transacciones basado en archivos para transacciones ACID y control de metadatos escalables.

  • azure Open Datasets son conjuntos de datos públicos mantenidos que puede usar para agregar características específicas del escenario a soluciones de aprendizaje automático para modelos más precisos. Los conjuntos de datos abiertos se encuentran en la nube en Microsoft Azure Storage y se puede acceder a ellos mediante varios métodos, como Apache Spark, LA API REST, Data Factory y otras herramientas.

En este tutorial, usará Apache Spark para:

  • Lee datos de contenedores de Azure Open Datasets.
  • Escribir datos en una tabla delta de Fabric Lakehouse.

Prerrequisitos

Seguir en el cuaderno

1-ingest-data.ipynb es el cuaderno que acompaña a este tutorial.

Datos de abandono bancario

El conjunto de datos contiene el estado de abandono de 10,000 clientes. También incluye atributos que podrían afectar a la renovación, como:

  • Puntuación de crédito
  • Ubicación geográfica (Alemania, Francia, España)
  • Género (masculino, femenino)
  • Edad
  • Antigüedad (años de ser cliente del banco)
  • Saldo de la cuenta
  • Salario estimado
  • Número de productos que un cliente ha adquirido a través del banco
  • Estado de la tarjeta de crédito (si un cliente tiene una tarjeta de crédito o no)
  • Estado de miembro activo (ya sea el cliente de un banco activo o no)

El conjunto de datos también incluye columnas como el número de fila, el identificador de cliente y el apellido del cliente que no deberían tener ningún impacto en la decisión del cliente de abandonar el banco.

El evento que define el abandono del cliente es el cierre de la cuenta bancaria del cliente. La columna exited del conjunto de datos hace referencia al abandono del cliente. No hay mucho contexto disponible sobre estos atributos, por lo que debe continuar sin tener información en segundo plano sobre el conjunto de datos. El objetivo es comprender cómo contribuyen estos atributos al estado exited.

Filas de ejemplo del conjunto de datos:

"CustomerID" "Apellido" Puntuación de crédito "Geografía" "Género" "Edad" Titularidad Equilibrio "NumOfProducts" "HasCrCard" "IsActiveMember" Salario Estimado "Exited"
15634602 Hargrave 619 Francia Femenino 42 2 0.00 1 1 1 101348.88 1
15647311 Hill 608 España Femenino 41 1 83807.86 1 0 1 112542.58 0

Descarga del conjunto de datos y carga en lakehouse

Sugerencia

Al definir los parámetros siguientes, puede usar este cuaderno con diferentes conjuntos de datos fácilmente.

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

Este código descarga una versión disponible públicamente del conjunto de datos y, a continuación, la almacena en una instancia de Fabric Lakehouse.

Importante

Asegúrese de agregar un lago de datos al cuaderno antes de ejecutarlo. Si no lo hace, se producirá un error.

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

Usarás los datos que acabas de ingerir: