Compartilhar via


Tutorial Parte 1: Ingerir dados em um lakehouse do Microsoft Fabric usando o Apache Spark

Neste tutorial, você vai ingerir dados em lakehouses do Fabric no formato de delta lake. Alguns termos importantes para entender:

  • Lakehouse – Um lakehouse é uma coleção de arquivos/pastas/tabelas que representa um banco de dados em um data lake usado pelo mecanismo Spark e pelo mecanismo SQL para o processamento de Big Data e que inclui funcionalidades aprimoradas para transações ACID ao usar as tabelas formatadas como Delta de código aberto.

  • Delta Lake – Delta Lake é uma camada de armazenamento de software livre que traz transações ACID, gerenciamento de metadados escalonáveis e processamento de dados em lote e streaming para o Apache Spark. Uma tabela do Delta Lake é um formato de tabela de dados que estende os arquivos de dados parquet com um log de transação baseado em arquivo para transações ACID e gerenciamento de metadados escalonável.

  • conjuntos de dados abertos do Azure são conjuntos de dados públicos coletados que você pode usar para adicionar recursos específicos de cenário a soluções de machine learning para modelos mais precisos. Os conjuntos de dados abertos estão na nuvem no Armazenamento do Microsoft Azure e podem ser acessados por vários métodos, incluindo Apache Spark, API REST, Data factory e outras ferramentas.

Neste tutorial, você usará o Apache Spark para:

  • Ler dados de contêineres do Azure Open Datasets.
  • Gravar dados em uma tabela delta do lakehouse do Fabric.

Pré-requisitos

  • Adicionar um lakehouse a este notebook. Você baixará dados de um blob público e, em seguida, os armazenará no lakehouse.

Acompanhar no notebook

1-ingest-data.ipynb é o notebook que acompanha este tutorial.

Dados de rotatividade de clientes bancários

O conjunto de dados contém o status de rotatividade de dez mil clientes. Ele também inclui atributos que podem afetar a rotatividade, como:

  • Pontuação de crédito
  • Localização geográfica (Alemanha, França, Espanha)
  • Gênero (masculino, feminino)
  • Idade
  • Duração (anos como cliente do banco)
  • Saldo da conta
  • Salário estimado
  • Número de produtos que um cliente comprou por meio do banco
  • Status do cartão de crédito (se um cliente tem um cartão de crédito ou não)
  • Status de membro ativo (seja o cliente de um banco ativo ou não)

O conjunto de dados também inclui colunas como número de linha, ID do cliente e sobrenome do cliente que não devem ter impacto na decisão do cliente de sair do banco.

O evento que define a evasão do cliente é o fechamento da conta bancária do cliente. A coluna exited no conjunto de dados refere-se ao abandono do cliente. Não há muito contexto disponível sobre esses atributos, portanto, você precisa continuar sem ter informações em segundo plano sobre o conjunto de dados. O objetivo é entender como esses atributos contribuem para o status exited.

Exemplos de linhas do conjunto de dados:

"CustomerID" "Sobrenome" "CreditScore" "Geografia" "Gênero" "Idade" Permanência Equilíbrio NúmeroDeProdutos "HasCrCard" "IsActiveMember" Salário Estimado "Saídas"
15634602 Hargrave 619 França Fêmea 42 2 0,00 1 1 1 101348.88 1
15647311 Colina 608 Espanha Fêmea 41 1 83807.86 1 0 1 112542.58 0

Baixar o conjunto de dados e carregar no lakehouse

Dica

Ao definir os parâmetros a seguir, você pode usar esse notebook com conjuntos de dados diferentes facilmente.

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

Esse código baixa uma versão disponível publicamente do conjunto de dados e, em seguida, armazena-a em um lakehouse do Fabric.

Importante

Adicione um lakehouse ao notebook antes de executá-lo. A falha ao fazer isso resultará em um erro.

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

Você usará os dados que acabou de ingerir em: