Compartir a través de


Tutorial Parte 1: Uso de Apache Spark para ingerir datos en una instancia de Microsoft Fabric Lakehouse

En este tutorial se ingieren datos en almacenes de lago de datos de Fabric en formato Delta Lake. Definimos algunos términos importantes aquí:

  • Almacén de lago de datos: es una colección de archivos, carpetas y tablas que representan una base de datos sobre un lago de datos. El motor de Spark y el motor de SQL usan recursos lakehouse para el procesamiento de macrodatos. Cuando se usan tablas con formato Delta de código abierto, ese procesamiento incluye funcionalidades mejoradas de transacciones ACID.

  • 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. Como formato de tabla de datos, Delta Lake extiende archivos de datos Parquet con un registro de transacciones basado en archivos para transacciones ACID y control de metadatos escalables.

  • Los conjuntos de datos abiertos de Azure son conjuntos de datos públicos mantenidos que agregan características específicas del escenario a las soluciones de aprendizaje automático. Esto conduce a modelos más precisos. Los conjuntos de datos abiertos son recursos en la nube que residen en Microsoft Azure Storage. Apache Spark, API REST, Data Factory y otras herramientas pueden acceder a Open Datasets.

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

  • Agregue una instancia de Lakehousea este cuaderno. En este tutorial, descargará datos de un blob público y, a continuación, almacenará los datos en el recurso lakehouse.

Sigue el progreso en un cuaderno

El cuaderno 1-ingest-data.ipynb acompaña a este tutorial.

Datos de abandono bancario

El conjunto de datos contiene información de estado de abandono para 10.000 clientes. También incluye atributos que podrían influir en la renovación, por ejemplo:

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

El conjunto de datos también incluye estas columnas:

  • número de fila
  • id. de cliente
  • apellidos del cliente

Estas columnas no deben influir en la decisión de un cliente de abandonar el banco.

El cierre de la cuenta bancaria de un cliente define la pérdida de ese cliente. La columna del conjunto de datos exited hace referencia al abandono del cliente. Hay poco contexto sobre estos atributos disponibles, por lo que debe continuar sin información en segundo plano sobre el conjunto de datos. Nuestro objetivo es comprender cómo contribuyen estos atributos al exited estado.

Filas del conjunto de datos de muestra

"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 fácilmente este cuaderno con diferentes conjuntos de datos:

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

El siguiente fragmento de código descarga una versión disponible públicamente del conjunto de datos y, a continuación, almacena ese recurso en una instancia de Fabric Lakehouse:

Importante

Asegúrese de Agregar un almacén de 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á los datos que acaba de ingerir: