arrow_back

Processamento ETL no Google Cloud com o Dataflow e o BigQuery (Python)

Teste e compartilhe seu conhecimento com nossa comunidade.
done
Tenha acesso a mais de 700 laboratórios, selos de habilidade e cursos

Processamento ETL no Google Cloud com o Dataflow e o BigQuery (Python)

Laboratório 1 hora universal_currency_alt 5 créditos show_chart Intermediário
info Este laboratório pode incorporar ferramentas de IA para ajudar no seu aprendizado.
Teste e compartilhe seu conhecimento com nossa comunidade.
done
Tenha acesso a mais de 700 laboratórios, selos de habilidade e cursos

GSP290

Laboratórios autoguiados do Google Cloud

Visão geral

No Google Cloud, você pode criar pipelines de dados que executam código Python para transferir e transformar dados de conjuntos de dados públicos para o BigQuery com estes serviços do Google Cloud:

  • Cloud Storage
  • Dataflow
  • BigQuery

Neste laboratório, você vai usar esses serviços para criar seu próprio pipeline de dados, incluindo as considerações de design e os detalhes de implementação. Dessa forma, você garante que seu protótipo atenda aos requisitos. Quando solicitado, abra os arquivos Python e leia os comentários.

Atividades

Neste curso, você vai aprender a:

  • Criar e executar pipelines do Dataflow (Python) para a ingestão de dados
  • Criar e executar pipelines do Dataflow (Python) para a transformação e o aprimoramento de dados

Configuração e requisitos

Antes de clicar no botão Start Lab

Leia estas instruções. Os laboratórios são cronometrados e não podem ser pausados. O timer é iniciado quando você clica em Começar o laboratório e mostra por quanto tempo os recursos do Google Cloud vão ficar disponíveis.

Este laboratório prático permite que você realize as atividades em um ambiente real de nuvem, não em uma simulação ou demonstração. Você vai receber novas credenciais temporárias para fazer login e acessar o Google Cloud durante o laboratório.

Confira os requisitos para concluir o laboratório:

  • Acesso a um navegador de Internet padrão (recomendamos o Chrome).
Observação: para executar este laboratório, use o modo de navegação anônima ou uma janela anônima do navegador. Isso evita conflitos entre sua conta pessoal e a conta de estudante, o que poderia causar cobranças extras na sua conta pessoal.
  • Tempo para concluir o laboratório---não se esqueça: depois de começar, não será possível pausar o laboratório.
Observação: não use seu projeto ou conta do Google Cloud neste laboratório para evitar cobranças extras na sua conta.

Como iniciar seu laboratório e fazer login no console do Google Cloud

  1. Clique no botão Começar o laboratório. Se for preciso pagar, você verá um pop-up para selecionar a forma de pagamento. No painel Detalhes do laboratório à esquerda, você vai encontrar o seguinte:

    • O botão Abrir console do Google Cloud
    • O tempo restante
    • As credenciais temporárias que você vai usar neste laboratório
    • Outras informações, se forem necessárias
  2. Se você estiver usando o navegador Chrome, clique em Abrir console do Google Cloud ou clique com o botão direito do mouse e selecione Abrir link em uma janela anônima.

    O laboratório ativa os recursos e depois abre a página Fazer login em outra guia.

    Dica: coloque as guias em janelas separadas lado a lado.

    Observação: se aparecer a caixa de diálogo Escolher uma conta, clique em Usar outra conta.
  3. Se necessário, copie o Nome de usuário abaixo e cole na caixa de diálogo Fazer login.

    {{{user_0.username | "Nome de usuário"}}}

    Você também encontra o Nome de usuário no painel Detalhes do laboratório.

  4. Clique em Seguinte.

  5. Copie a Senha abaixo e cole na caixa de diálogo de boas-vindas.

    {{{user_0.password | "Senha"}}}

    Você também encontra a Senha no painel Detalhes do laboratório.

  6. Clique em Seguinte.

    Importante: você precisa usar as credenciais fornecidas no laboratório, e não as da sua conta do Google Cloud. Observação: se você usar sua própria conta do Google Cloud neste laboratório, é possível que receba cobranças adicionais.
  7. Acesse as próximas páginas:

    • Aceite os Termos e Condições.
    • Não adicione opções de recuperação nem autenticação de dois fatores (porque essa é uma conta temporária).
    • Não se inscreva em testes gratuitos.

Depois de alguns instantes, o console do Google Cloud será aberto nesta guia.

Observação: clique em Menu de navegação no canto superior esquerdo para acessar uma lista de produtos e serviços do Google Cloud. Ícone do menu de navegação

Ativar o Cloud Shell

O Cloud Shell é uma máquina virtual com várias ferramentas de desenvolvimento. Ele tem um diretório principal permanente de 5 GB e é executado no Google Cloud. O Cloud Shell oferece acesso de linha de comando aos recursos do Google Cloud.

  1. Clique em Ativar o Cloud Shell Ícone "Ativar o Cloud Shell" na parte de cima do console do Google Cloud.

Depois de se conectar, vai notar que sua conta já está autenticada, e que o projeto está configurado com seu PROJECT_ID. A saída contém uma linha que declara o projeto PROJECT_ID para esta sessão:

Your Cloud Platform project in this session is set to YOUR_PROJECT_ID

gcloud é a ferramenta de linha de comando do Google Cloud. Ela vem pré-instalada no Cloud Shell e aceita preenchimento com tabulação.

  1. (Opcional) É possível listar o nome da conta ativa usando este comando:
gcloud auth list
  1. Clique em Autorizar.

  2. A saída será parecida com esta:

Saída:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (Opcional) É possível listar o ID do projeto usando este comando:
gcloud config list project

Saída:

[core] project = <project_ID>

Exemplo de saída:

[core] project = qwiklabs-gcp-44776a13dea667a6 Observação: para conferir a documentação completa da gcloud, acesse o guia com informações gerais sobre a gcloud CLI no Google Cloud.

Tarefa 1: verificar se a API Dataflow está ativada

Para ter acesso à API Dataflow, reinicie a conexão.

Importante: mesmo que a API já esteja ativada, siga as etapas 1 a 4 abaixo para desativá-la. Em seguida, reative a API para que ela seja reiniciada de maneira adequada.
  1. No console do Cloud, digite "API Dataflow" na barra de pesquisa superior. Clique no resultado para API Dataflow.

  2. Selecione Gerenciar.

  3. Clique em Desativar API.

Se for necessário confirmar, clique em Desativar.

  1. Selecione Ativar.

A opção para desativar a API aparece quando ela é ativada novamente.

Teste a tarefa concluída

Clique em Verificar meu progresso para conferir a tarefa realizada.

Desativar e reativar a API Dataflow

Tarefa 2: fazer o download do código inicial

  1. Execute o seguinte comando no Cloud Shell para acessar exemplos de Python do Dataflow no GitHub dos serviços profissionais do Google Cloud:
gsutil -m cp -R gs://spls/gsp290/dataflow-python-examples .
  1. Agora, defina uma variável igual ao ID do projeto no Cloud Shell.
export PROJECT={{{ project_0.project_id }}} gcloud config set project $PROJECT

Tarefa 3: criar um bucket do Cloud Storage

  • Use o comando "make bucket" no Cloud Shell para criar um bucket regional na região do projeto:
gsutil mb -c regional -l {{{ project_0.default_region }}} gs://$PROJECT

Teste a tarefa concluída

Clique em Verificar meu progresso para conferir a tarefa realizada.

Crie um bucket do Cloud Storage

Tarefa 4: copiar os arquivos para o bucket

  • Use o comando gsutil no Cloud Shell a fim de copiar arquivos para o bucket do Cloud Storage que você acabou de criar:
gsutil cp gs://spls/gsp290/data_files/usa_names.csv gs://$PROJECT/data_files/ gsutil cp gs://spls/gsp290/data_files/head_usa_names.csv gs://$PROJECT/data_files/

Teste a tarefa concluída

Clique em Verificar meu progresso para conferir a tarefa realizada.

Copie os arquivos para seu bucket

Tarefa 5: criar um conjunto de dados do BigQuery

  • No Cloud Shell, crie um conjunto de dados no BigQuery chamado lake. É nesse local que todas as suas tabelas serão carregadas no BigQuery:
bq mk lake

Teste a tarefa concluída

Clique em Verificar meu progresso para conferir a tarefa realizada.

Crie o conjunto de dados do BigQuery (nome: "lake")

Tarefa 6: criar um pipeline do Dataflow

Nesta seção, você criará um Dataflow somente de anexação que fará a ingestão de dados na tabela do BigQuery. Use o editor de código integrado para exibir e editar o código no console do Google Cloud.

Diagrama de pipeline do Dataflow somente de anexação

Abrir o editor de código do Cloud Shell

  1. Acesse o código-fonte clicando no ícone Abrir editor no Cloud Shell:

Ícone &quot;Abrir editor&quot;

  1. Se for solicitado, clique em Abrir em uma nova janela. Isso vai abrir o editor de código em uma nova janela. Com o editor do Cloud Shell, você pode editar arquivos no ambiente do Cloud Shell. Quando estiver no Editor, basta clicar em Abrir terminal para retornar ao Cloud Shell.

Tarefa 7: realizar a ingestão de dados com um pipeline do Dataflow

Agora você criará um pipeline do Dataflow com origem TextIO e destino BigQueryIO para fazer a ingestão de dados no BigQuery. Mais especificamente, ele deverá:

  • ingerir os arquivos do Cloud Storage;
  • filtrar a linha de cabeçalho nos arquivos;
  • converter as linhas lidas em objetos de dicionário;
  • enviar as linhas para o BigQuery.

Tarefa 8: revisar o código Python do pipeline

No Editor de código, acesse dataflow-python-examples > dataflow_python_examples e abra o arquivo data_ingestion.py. Leia os comentários que explicam o que o código faz. Ele vai preencher o conjunto de dados lake com uma tabela no BigQuery.

Editor de código

Tarefa 9: executar o pipeline do Apache Beam

  1. Volte à sessão do Cloud Shell para realizar esta etapa. Agora você precisa configurar as bibliotecas Python necessárias.

O job do Dataflow neste laboratório exige o Python 3.8. Para verificar se você tem a versão adequada, execute os processos do Dataflow em um contêiner do Docker com Python 3.8.

  1. Execute o seguinte comando no Cloud Shell para iniciar um contêiner com Python:
docker run -it -e PROJECT=$PROJECT -v $(pwd)/dataflow-python-examples:/dataflow python:3.8 /bin/bash

Este comando vai extrair um contêiner do Docker com a versão estável mais recente do Python 3.8 e executar um shell de comando para gerar os próximos comandos no contêiner. A flag -v fornece o código-fonte como um volume para o contêiner, para permitir a edição do código no editor do Cloud Shell e manter o acesso a ele no contêiner em execução.

  1. Depois que o contêiner terminar a extração e começar a ser executado no Cloud Shell, execute o seguinte comando para instalar o apache-beam nele:
pip install apache-beam[gcp]==2.59.0
  1. Em seguida, no contêiner que está em execução no Cloud Shell, altere os diretórios para o local em que você vinculou o código-fonte:
cd dataflow/

Execute o pipeline de ingestão do Dataflow na nuvem

  1. O código a seguir ativará os workers necessários e os desativará quando estiverem concluídos:
python dataflow_python_examples/data_ingestion.py \ --project=$PROJECT --region={{{ project_0.default_region }}} \ --runner=DataflowRunner \ --machine_type=e2-standard-2 \ --staging_location=gs://$PROJECT/test \ --temp_location gs://$PROJECT/test \ --input gs://$PROJECT/data_files/head_usa_names.csv \ --save_main_session
  1. Volte ao console do Cloud e abra Menu de navegação > Dataflow para conferir o status do job.

Menu de navegação > Dataflow

  1. Clique no nome do job para conferir o progresso dele. Quando o Status do job aparecer como Concluído, siga para a próxima etapa. Esse pipeline do Dataflow vai levar cerca de cinco minutos para ser iniciado, concluir o trabalho e ser encerrado.

  2. Acesse o BigQuery (Menu de navegação > BigQuery) e confira se os dados foram preenchidos.

Menu de navegação > BigQuery

  1. Clique no nome do projeto para exibir a tabela usa_names no conjunto de dados lake.

Tabela usa_names

  1. Clique na tabela e acesse a guia Visualização para exibir exemplos dos dados de usa_names.
Observação: se a tabela usa_names não for exibida, tente atualizar a página ou visualizar as tabelas usando a interface clássica do BigQuery.

Teste a tarefa concluída

Clique em Verificar meu progresso para conferir a tarefa realizada.

Crie um pipeline do Dataflow para ingestão de dados

Tarefa 10: transformação de dados

Agora você criará um pipeline do Dataflow com origem TextIO e destino BigQueryIO para fazer a ingestão de dados no BigQuery. Mais especificamente, você vai fazer o seguinte:

  • ingerir os arquivos do Cloud Storage;
  • converter as linhas lidas em objetos de dicionário;
  • transformar os dados que contêm o ano em um formato que o BigQuery possa entender como data;
  • enviar as linhas para o BigQuery.

Revise o código Python do pipeline de transformação

No editor de código, abra o arquivo data_transformation.py. Leia os comentários que explicam o que o código faz.

Tarefa 11: executar o pipeline de transformação do Dataflow

Você executará o pipeline do Dataflow na nuvem. Isso ativará os workers necessários e os desativará quando estiverem concluídos.

  1. Para fazer isso, execute os comandos a seguir:
python dataflow_python_examples/data_transformation.py \ --project=$PROJECT \ --region={{{ project_0.default_region }}} \ --runner=DataflowRunner \ --machine_type=e2-standard-2 \ --staging_location=gs://$PROJECT/test \ --temp_location gs://$PROJECT/test \ --input gs://$PROJECT/data_files/head_usa_names.csv \ --save_main_session
  1. Acesse Menu de navegação > Dataflow e clique no nome do job para exibir o status dele. Esse pipeline do Dataflow vai levar cerca de cinco minutos para ser iniciado, concluir o trabalho e ser encerrado.

  2. Quando o Status do job aparecer como Concluído na tela correspondente do Dataflow, acesse o BigQuery para verificar se os dados foram preenchidos.

  3. A tabela usa_names_transformed deve aparecer abaixo do conjunto de dados lake.

  4. Clique na tabela e acesse a guia Visualização para consultar exemplos dos dados de usa_names_transformed.

Observação: se a tabela usa_names_transformed não for exibida, atualize a página ou visualize as tabelas usando a interface clássica do BigQuery.

Teste a tarefa concluída

Clique em Verificar meu progresso para conferir a tarefa realizada.

Crie um pipeline do Dataflow para transformação de dados

Tarefa 12: realizar o aprimoramento de dados

Agora você criará um pipeline do Dataflow com origem TextIO e destino BigQueryIO para fazer a ingestão de dados no BigQuery. Mais especificamente, você vai fazer o seguinte:

  • ingerir os arquivos do Cloud Storage;
  • filtrar a linha de cabeçalho nos arquivos;
  • converter as linhas lidas em objetos de dicionário;
  • enviar as linhas para o BigQuery.

Tarefa 13: revisar o código Python do pipeline de aprimoramento de dados

  1. No editor de código, abra o arquivo data_enrichment.py.

  2. Confira os comentários que explicam o que o código faz. Esse código preencherá os dados no BigQuery.

No momento, esta é a linha 83:

values = [x.decode('utf8') for x in csv_row]
  1. Faça as seguintes alterações nessa linha:
values = [x for x in csv_row]
  1. Depois de editar a linha, lembre-se de salvar este arquivo atualizado selecionando o menu suspenso Arquivo no Editor e clicando em Salvar.

Tarefa 14: executar o pipeline de enriquecimento de dados do Dataflow

Agora você executará o pipeline do Dataflow na nuvem.

  1. Execute o seguinte comando no Cloud Shell para ativar os workers necessários e encerrá-los após a conclusão:
python dataflow_python_examples/data_enrichment.py \ --project=$PROJECT \ --region={{{ project_0.default_region }}} \ --runner=DataflowRunner \ --machine_type=e2-standard-2 \ --staging_location=gs://$PROJECT/test \ --temp_location gs://$PROJECT/test \ --input gs://$PROJECT/data_files/head_usa_names.csv \ --save_main_session
  1. Acesse Menu de navegação > Dataflow para conferir o status do job. Esse pipeline do Dataflow vai levar cerca de cinco minutos para ser iniciado, concluir o trabalho e ser encerrado.

  2. Quando o Status do job aparecer como Concluído na tela correspondente do Dataflow, acesse o BigQuery para verificar se os dados foram preenchidos.

A tabela usa_names_enriched será exibida abaixo do conjunto de dados lake.

  1. Clique na tabela e acesse a guia Visualização para exibir exemplos dos dados de usa_names_enriched.
Observação: se a tabela usa_names_enriched não for exibida, atualize a página ou visualize as tabelas usando a interface clássica do BigQuery.

Teste a tarefa de enriquecimento de dados concluída

Clique em Verificar meu progresso para conferir a tarefa realizada.

Crie um pipeline do Dataflow para enriquecimento de dados

Tarefa 15: código Python do pipeline "Conversão de data lake em data mart e revisão"

Agora crie um pipeline do Dataflow que leia dados de duas fontes de dados do BigQuery e mescle essas fontes. Mais especificamente, você vai fazer o seguinte:

  • ingerir arquivos de duas fontes do BigQuery;
  • mesclar as duas fontes de dados;
  • filtrar a linha de cabeçalho nos arquivos;
  • converter as linhas lidas em objetos de dicionário;
  • enviar as linhas para o BigQuery.

No Editor de código, abra o arquivo data_lake_to_mart.py. Leia os comentários que explicam o que o código faz. Esse código vai mesclar duas tabelas e preencher os dados resultantes no BigQuery.

Tarefa 16: executar o pipeline do Apache Beam para realizar a mesclagem de dados e criar a tabela resultante no BigQuery

Agora, execute o pipeline do Dataflow na nuvem.

  1. Execute o seguinte bloco de código no Cloud Shell para ativar os workers necessários e encerrá-los após a conclusão:
python dataflow_python_examples/data_lake_to_mart.py \ --worker_disk_type="compute.googleapis.com/projects//zones//diskTypes/pd-ssd" \ --max_num_workers=4 \ --project=$PROJECT \ --runner=DataflowRunner \ --machine_type=e2-standard-2 \ --staging_location=gs://$PROJECT/test \ --temp_location gs://$PROJECT/test \ --save_main_session \ --region={{{ project_0.default_region }}}
  1. Acesse o Menu de navegação > Dataflow e clique no nome do novo job para conferir o status dele. Esse pipeline do Dataflow vai levar cerca de cinco minutos para ser iniciado, concluir o trabalho e ser encerrado.

  2. Quando o Status do job aparecer como Concluído na tela correspondente do Dataflow, acesse o BigQuery para verificar se os dados foram preenchidos.

A tabela orders_denormalized_sideinput será exibida abaixo do conjunto de dados lake.

  1. Clique na tabela e acesse a seção Visualização para exibir exemplos dos dados de orders_denormalized_sideinput.
Observação: se a tabela orders_denormalized_sideinput não for exibida, atualize a página ou visualize as tabelas usando a interface clássica do BigQuery.

Teste a tarefa JOIN concluída

Clique em Verificar meu progresso para conferir a tarefa realizada.

Criar pipeline "Conversão de data lake em data mart" do Dataflow

Teste seu conhecimento

Responda às perguntas de múltipla escolha abaixo para reforçar sua compreensão dos conceitos abordados neste laboratório. Use tudo o que você aprendeu até aqui.

Parabéns!

Você executou o código Python usando o Dataflow para ingerir dados no BigQuery e transformá-los.

Próximas etapas/Saiba mais

Quer saber mais? Confira a documentação oficial:

Treinamento e certificação do Google Cloud

Esses treinamentos ajudam você a aproveitar as tecnologias do Google Cloud ao máximo. Nossas aulas incluem habilidades técnicas e práticas recomendadas para ajudar você a alcançar rapidamente o nível esperado e continuar sua jornada de aprendizado. Oferecemos treinamentos que vão do nível básico ao avançado, com opções de aulas virtuais, sob demanda e por meio de transmissões ao vivo para que você possa encaixá-las na correria do seu dia a dia. As certificações validam sua experiência e comprovam suas habilidades com as tecnologias do Google Cloud.

Manual atualizado em 11 de fevereiro de 2024

Laboratório testado em 12 de outubro de 2023

Copyright 2024 Google LLC. Todos os direitos reservados. Google e o logotipo do Google são marcas registradas da Google LLC. Todos os outros nomes de produtos e empresas podem ser marcas registradas das respectivas empresas a que estão associados.

Este conteúdo não está disponível no momento

Você vai receber uma notificação por e-mail quando ele estiver disponível

Ótimo!

Vamos entrar em contato por e-mail se ele ficar disponível