Compartilhar via


Tutorial Parte 1: Usar o Apache Spark para ingerir dados em um lakehouse do Microsoft Fabric

Este tutorial ingere dados em lakehouses do Fabric no formato delta lake. Definimos alguns termos importantes aqui:

  • Lakehouse – A lakehouse é uma coleção de arquivos, pastas e/ou tabelas que representam um banco de dados em um data lake. O mecanismo spark e o mecanismo SQL usam recursos lakehouse para processamento de Big Data. Quando você usa tabelas formatadas em Delta de software livre, esse processamento inclui recursos avançados de transação ACID.

  • 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. Como formato de tabela de dados, o Delta Lake amplia os arquivos de dados Parquet ao adicionar um log de transações baseado em arquivo, para dar suporte a transações ACID e ao gerenciamento escalonável de metadados.

  • Os conjuntos de dados abertos do Azure são conjuntos de dados públicos coletados que adicionam recursos específicos do cenário a soluções de machine learning. Isso leva a modelos mais precisos. Conjuntos de dados abertos são recursos de nuvem que residem no Armazenamento do Microsoft Azure. Apache Spark, API REST, Data factory e outras ferramentas podem acessar conjuntos de dados abertos.

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. Neste tutorial, você baixa dados de um blob público e armazena os dados no recurso lakehouse.

Acompanhe em um caderno de anotações

O notebook 1-ingest-data.ipynb acompanha este tutorial.

Dados de rotatividade de clientes bancários

O conjunto de dados contém informações de status de rotatividade para 10.000 clientes. Ele também inclui atributos que podem influenciar a variação, por exemplo:

  • Pontuação de crédito
  • Localização geográfica (Alemanha, França, Espanha)
  • Gênero (masculino, feminino)
  • Idade
  • Posse (o número de anos em que o cliente era cliente naquele 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 ou não um cartão de crédito)
  • Status do membro ativo (se o cliente tem ou não um status de cliente do banco ativo)

O conjunto de dados também inclui estas colunas:

  • número de linha
  • ID do cliente
  • sobrenome do cliente

Essas colunas não devem ter influência sobre a decisão de um cliente de deixar o banco.

O fechamento de uma conta bancária do cliente define a variação desse cliente. A coluna do conjunto exited de dados refere-se ao abandono do cliente. Pouco contexto sobre esses atributos está disponível, portanto, você deve continuar sem informações em segundo plano sobre o conjunto de dados. Nosso objetivo é entender como esses atributos contribuem para o exited status.

Linhas de conjunto de dados de exemplo:

"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 seguintes parâmetros, você pode usar facilmente este notebook com conjuntos de dados diferentes:

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

O trecho de código a seguir baixa uma versão disponível publicamente do conjunto de dados e então armazena esse recurso em um fabric lakehouse:

Importante

Certifique-se de adicionar um lakehouse ao notebook antes de executá-lo. Falha ao fazer isso resulta 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.")

Use os dados que acabou de ingerir em: