Partilhar via


Tutorial Parte 1: Usar o Apache Spark para ingerir dados numa casa de lago Microsoft Fabric

Este tutorial incorpora dados em casas de lago Fabric em formato delta lake. Definimos aqui alguns termos importantes:

  • Lakehouse - Um lakehouse é uma coleção de arquivos, pastas ou tabelas que representam um banco de dados num data lake. O mecanismo Spark e o mecanismo SQL usam recursos lakehouse para processamento de big data. Quando você usa tabelas de código aberto formatadas em Delta, esse processamento inclui recursos aprimorados de transação ACID.

  • Delta Lake - O Delta Lake é uma camada de armazenamento de código aberto que traz transações ACID, gerenciamento de metadados escaláveis e processamento de dados em lote e streaming para o Apache Spark. Como um formato de tabela de dados, o Delta Lake estende os arquivos de dados do Parquet com um log de transações baseado em arquivo para transações ACID e gerenciamento de metadados escaláveis.

  • Azure Open Datasets são conjuntos de dados públicos curados que adicionam funcionalidades específicas de cenários a soluções de aprendizagem automática. Isso leva a modelos mais precisos. Conjuntos de dados abertos são recursos na cloud que residem no Microsoft Armazenamento do Azure. Apache Spark, API REST, Data factory e outras ferramentas podem acessar Open Datasets.

Neste tutorial, você usa o Apache Spark para:

  • Leia dados dos contentores do Azure Open Datasets.
  • Escreva dados numa tabela delta do Fabric lakehouse.

Pré-requisitos

  • Adicione um lakehouse a este bloco de anotações. Neste tutorial, você primeiro baixa dados de um blob público. Em seguida, os dados são armazenados nesse recurso lakehouse.

Observação

Antes de começar, certifique-se de que completa os passos Prepare o seu sistema : crie um espaço de trabalho, crie uma casa no lago e anexe-a ao seu caderno. Os dados de exemplo usados neste tutorial provêm de um contentor público do Azure Open Datasets e são acedidos programáticamente no código do caderno.

Acompanhe utilizando um caderno

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

Dica

Este tutorial lê dados de exemplo de um contentor do Azure Open Datasets. Se encontrar um erro de acesso ao carregar os dados, pode descarregar manualmente o ficheiro churn.csv do repositório fabric-samples GitHub e carregá-lo para a sua casa do lago.

Dados de rotatividade de clientes bancários

O conjunto de dados contém informações de estado de churn para 10.000 clientes. Também inclui atributos que podem influenciar a rotatividade - por exemplo:

  • Pontuação de crédito
  • Localização geográfica (Alemanha, França, Espanha)
  • Sexo (masculino, feminino)
  • Idade
  • Titularidade (número de anos em que o cliente foi cliente desse banco)
  • Saldo da conta
  • Salário estimado
  • Número de produtos que um cliente comprou através do banco
  • Estado do cartão de crédito (quer o cliente tenha ou não um cartão de crédito)
  • Estatuto de membro ativo (quer o cliente tenha ou não um estatuto de cliente bancário ativo)

O conjunto de dados também inclui estas colunas:

  • número da linha
  • ID do cliente
  • Apelido do Cliente

Estas colunas não devem ter qualquer influência na decisão de um cliente de sair do banco.

O encerramento de uma conta bancária de um cliente define a rotatividade desse cliente. A coluna do exited conjunto de dados refere-se ao abandono do cliente. Pouco contexto sobre esses atributos está disponível, portanto, você deve prosseguir sem informações básicas sobre o conjunto de dados. Nosso objetivo é entender como esses atributos contribuem para o exited status.

Exemplos de linhas de conjunto de dados

"ID do cliente" "Apelido" "Pontuação de crédito" "Geografia" "Género" "Idade" Estabilidade "Equilíbrio" NúmeroDeProdutos "HasCrCard" ÉMembroAtivo "Salário estimado" "Saiu"
15634602 Hargrave 619 França Feminino 42 2 0.00 1 1 1 101348.88 1
15647311 Colina 608 Espanha Feminino 41 1 83807.86 1 0 1 112542.58 0

Faça o download do conjunto de dados e faça o upload para lakehouse

Dica

Ao definir os seguintes parâmetros, você pode facilmente usar este bloco de anotações com diferentes conjuntos de dados:

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 seguinte excerto de código descarrega uma versão disponível publicamente do conjunto de dados e depois armazena esse recurso numa casa de lago Fabric:

Importante

Certifique-se de adicionar um lakehouse ao bloco de anotações antes de executá-lo. Se não o fizer, registar-se-á um erro.

import os, requests
if not IS_CUSTOM_DATA:
# Download demo data files into lakehouse if not exist
    remote_url = "https://synapseaisolutionsa.z13.web.core.windows.net/data/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.")

Utiliza os dados que ingeriu recentemente: