arrow_back

Cloud Composer: como copiar tabelas do BigQuery em diferentes locais

Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Cloud Composer: como copiar tabelas do BigQuery em diferentes locais

Lab 1 hora 15 minutos universal_currency_alt 5 créditos show_chart Intermediário
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP283

Laboratórios autoguiados do Google Cloud

Visão geral

Imagine que você tem conjuntos de dados em diversos lugares do mundo e que seus dados estão em buckets do Google Cloud Storage ou em tabelas do BigQuery. Como eles podem ser organizados para que sejam consolidados e analisados, oferecendo insights sobre sua empresa?

O Cloud Composer permite criar fluxos de trabalho e mover seus dados entre regiões e sistemas de armazenamento usando uma interface gráfica intuitiva. Entre outros benefícios, o serviço conta com modelos confiáveis e fáceis de usar para transferir seus dados entre o BigQuery e o Cloud Storage.

Neste laboratório, você vai criar e executar um fluxo de trabalho do Apache Airflow no Cloud Composer que realiza as seguintes tarefas:

  • Lê um arquivo de configuração que fornece uma lista de tabelas a serem copiadas
  • Exporta a lista de tabelas de um conjunto de dados do BigQuery localizado nos EUA para o Cloud Storage
  • Copia as tabelas exportadas do bucket do Cloud Storage nos EUA para o bucket do Cloud Storage na UE
  • Importa a lista de tabelas para o conjunto de dados de destino do BigQuery na UE

Visualização do DAG

Atividades deste laboratório

Neste laboratório, você vai aprender a:

  • Criar um ambiente do Cloud Composer
  • Criar buckets do Cloud Storage
  • Criar conjuntos de dados do BigQuery
  • Criar e executar fluxos de trabalho do Apache Airflow no Cloud Composer para transferir dados entre o Cloud Storage e o BigQuery

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ê verá o seguinte:

    • O botão Abrir Console do Cloud
    • Tempo restante
    • As credenciais temporárias que você vai usar neste laboratório
    • Outras informações se forem necessárias
  2. Clique em Abrir Console do Google. O laboratório ativa recursos e depois abre outra guia com a página Fazer login.

    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. Caso seja preciso, copie o Nome de usuário no painel Detalhes do laboratório e cole esse nome na caixa de diálogo Fazer login. Clique em Avançar.

  4. Copie a Senha no painel Detalhes do laboratório e a cole na caixa de diálogo Olá. Clique em Avançar.

    Importante: você precisa usar as credenciais do painel à esquerda. Não use suas credenciais do Google Cloud Ensina. Observação: se você usar sua própria conta do Google Cloud neste laboratório, é possível que receba cobranças adicionais.
  5. 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 GCP vai ser aberto nesta guia.

Observação: para ver uma lista dos produtos e serviços do Google Cloud, clique no Menu de navegação no canto superior esquerdo. Í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: criar um ambiente do Cloud Composer

  1. Primeiro, crie um ambiente do Cloud Composer clicando em Composer no Menu de navegação.

Composer em destaque no menu de navegação

  1. Depois, clique em Criar ambiente.

  2. No menu suspenso, selecione Composer 2.

  3. Defina os parâmetros a seguir para o ambiente:

  • Nome: composer-advanced-lab
  • Local:
  • Versão de imagem: composer-2.6.2-airflow-2.6.3

Visualização do DAG

  • Marque a caixa de seleção Conceder permissões necessárias à conta de serviço do Cloud Composer e clique em Conceder.

  • Clique no menu suspenso para Mostrar configuração avançada e selecione Zona do banco de dados do Airflow como .

Não altere as outras configurações.

  1. Clique em Criar.

O processo de criação do ambiente será concluído quando uma marca de seleção verde for exibida à esquerda do nome dele na página "Ambientes" no console do Cloud.

Observação: a conclusão do processo de configuração do ambiente pode levar até 20 minutos. Prossiga para as tarefas seguintes, "Criar buckets do Cloud Storage" e "Conjunto de dados de destino do BigQuery".

Clique em Verificar meu progresso para conferir o objetivo.

Crie o ambiente do Cloud Composer.

Tarefa 2: criar buckets do Cloud Storage

Nesta tarefa, você vai criar dois buckets multirregionais do Cloud Storage. Esses buckets serão usados para copiar as tabelas exportadas entre os locais, neste caso EUA e UE.

Criar um bucket nos EUA

  1. Acesse Cloud Storage > Bucket e clique em Criar.
  2. Dê ao bucket um nome exclusivo que inclua o ID do projeto (por exemplo, -eua).
  3. Em Tipo de local, selecione EUA (várias regiões nos Estados Unidos).
  4. Deixe os demais valores como padrão e clique em Criar.
  5. Marque a caixa Aplicar a prevenção do acesso público neste bucket e clique em Confirmar no pop-up O acesso público será bloqueado, se necessário.

Criar um bucket na UE

Repita as etapas para criar outro bucket na região da UE. O nome exclusivo precisa incluir o local como um sufixo do bucket (por exemplo, -ue).

Clique em Verificar meu progresso para conferir o objetivo.

Crie dois buckets do Cloud Storage.

Tarefa 3: criar o conjunto de dados de destino do BigQuery

  1. Crie o conjunto de dados de destino do BigQuery na UE com a nova interface da Web do BigQuery.

  2. Acesse Menu de navegação > BigQuery.

Você verá a caixa de mensagem Olá! Este é o BigQuery no Console do Cloud. Ela tem um link para o guia de início rápido e lista as atualizações da interface.

  1. Clique em Concluído.

  2. Em seguida, clique nos três pontos ao lado do ID do projeto do Qwiklabs e selecione Criar conjunto de dados.

Criar conjunto de dados em destaque

  1. Use o ID do conjunto de dados nyc_tlc_EU, escolha multirregional como o tipo do local e selecione UE no menu suspenso.

Campo de texto do ID do conjunto de dados e menu suspenso do local dos dados

  1. Clique em CRIAR CONJUNTO DE DADOS.

Clique em Verificar meu progresso para conferir o objetivo.

Crie um conjunto de dados.

Tarefa 4: breve introdução aos conceitos básicos do Airflow

  • Enquanto espera o ambiente ficar pronto, leia sobre o arquivo de amostra que você usará neste laboratório.

O Airflow (links em inglês) é uma plataforma para criar, programar e monitorar fluxos de trabalho programaticamente.

Use o Airflow para criar fluxos de trabalho, como gráficos acíclicos dirigidos (DAGs, na sigla em inglês) de tarefas. O programador do Airflow executa suas tarefas em uma matriz de workers enquanto segue as dependências especificadas.

Conceitos básicos

DAG: um gráfico acíclico dirigido é um conjunto de tarefas organizadas para refletir as relações e dependências entre elas.

Operador: é a descrição de uma única tarefa. Em geral, os operadores são atômicos. Por exemplo, o operador BashOperator é usado para executar o comando "bash".

Tarefa: uma instância parametrizada de um operador. As tarefas são nós no DAG.

Instância de tarefa: a execução específica de uma tarefa. Composta de um DAG, uma tarefa e um ponto no tempo. Ela tem sempre um estado indicativo, por exemplo: running, success, failed, skipped etc.

Aprenda os conceitos do Airflow na Documentação sobre conceitos.

Tarefa 5: definir o fluxo de trabalho

No Cloud Composer, os fluxos de trabalho são compostos de gráficos acíclicos dirigidos (DAGs). O código do fluxo de trabalho, também conhecido como DAG, está no arquivo bq_copy_across_locations.py. Abra o arquivo para ver a estrutura do código. Alguns dos principais componentes do arquivo serão detalhados a seguir.

Para orquestrar todas as tarefas do fluxo de trabalho, o DAG importa estes operadores:

  1. DummyOperator: cria tarefas fictícias de início e término para gerar uma representação visual melhor do DAG.
  2. BigQueryToCloudStorageOperator: exporta tabelas do BigQuery para os buckets do Cloud Storage usando o formato Avro.
  3. GoogleCloudStorageToGoogleCloudStorageOperator: copia arquivos para os buckets do Cloud Storage.
  4. GoogleCloudStorageToBigQueryOperator: importa tabelas de arquivos Avro no bucket do Cloud Storage.
  • Neste exemplo, a função read_table_list() está definida para ler o arquivo de configuração e criar a lista das tabelas a serem copiadas.
# -------------------------------------------------------------------------------- # Functions # -------------------------------------------------------------------------------- def read_table_list(table_list_file): """ Reads the master CSV file that will help in creating Airflow tasks in the DAG dynamically. :param table_list_file: (String) The file location of the master file, e.g. '/home/airflow/framework/master.csv' :return master_record_all: (List) List of Python dictionaries containing the information for a single row in master CSV file. """ master_record_all = [] logger.info('Reading table_list_file from : %s' % str(table_list_file)) try: with open(table_list_file, 'rb') as csv_file: csv_reader = csv.reader(csv_file) next(csv_reader) # skip the headers for row in csv_reader: logger.info(row) master_record = { 'table_source': row[0], 'table_dest': row[1] } master_record_all.append(master_record) return master_record_all except IOError as e: logger.error('Error opening table_list_file %s: ' % str( table_list_file), e)
  • O nome do DAG é bq_copy_us_to_eu_01. Como o DAG não é programado por padrão, requer acionamento manual.
default_args = { 'owner': 'airflow', 'start_date': datetime.today(), 'depends_on_past': False, 'email': [''], 'email_on_failure': False, 'email_on_retry': False, 'retries': 1, 'retry_delay': timedelta(minutes=5), } # DAG object. with models.DAG('bq_copy_us_to_eu_01', default_args=default_args, schedule_interval=None) as dag:
  • Para definir o plug-in do Cloud Storage, a classe Cloud StoragePlugin(AirflowPlugin) é definida mapeando o hook e o operador baixados da ramificação estável do Airflow 1.10.
# Import operator from plugins from gcs_plugin.operators import gcs_to_gcs

Tarefa 6: ver informações do ambiente

  1. Volte ao Composer para verificar o status do ambiente.

  2. Depois que seu ambiente for criado, clique no nome dele para ver os detalhes.

A página Detalhes do ambiente mostra o URL da IU da Web do Airflow, o ID do cluster do Google Kubernetes Engine e o nome do bucket do Cloud Storage conectado à pasta de DAGs.

Página de configuração ambiental

Observação: o Cloud Composer usa o Cloud Storage para armazenar DAGs do Apache Airflow, também conhecidos como fluxos de trabalho. Cada ambiente tem um bucket do Cloud Storage associado. O Cloud Composer programa apenas os DAGs no bucket do Cloud Storage.

As próximas etapas precisam ser concluídas no Cloud Shell.

Como criar um ambiente virtual

Os ambientes virtuais Python são usados para isolar do sistema a instalação de pacotes.

  1. Instale o ambiente virtualenv:
sudo apt-get install -y virtualenv
  1. Crie o ambiente virtual:
python3 -m venv venv
  1. Ative o ambiente virtual.
source venv/bin/activate

Tarefa 7: criar uma variável para o bucket de DAGs no Cloud Storage

  • Para copiar o nome do bucket de DAGs na página "Detalhes do ambiente" e definir uma variável associada a ele, execute o seguinte no Cloud Shell:
Observação: não esqueça de trocar o nome do bucket de DAGs no comando a seguir. Acesse Menu de navegação > Cloud Storage. É semelhante a us-east1-composer-advanced-YOURDAGSBUCKET-bucket. DAGS_BUCKET=<your DAGs bucket name>

Essa variável vai ser usada algumas vezes durante o laboratório.

Tarefa 8: definir variáveis do Airflow

As variáveis do Airflow são um conceito específico dessa plataforma e diferem das variáveis de ambiente. Nesta seção, você vai definir as três variáveis do Airflow usadas pelo DAG que vamos implantar: table_list_file_path, gcs_source_bucket e gcs_dest_bucket.

Chave Valor Detalhes
table_list_file_path /home/airflow/gcs/dags/bq_copy_eu_to_us_sample.csv O arquivo CSV que lista as tabelas de origem e de destino, incluindo o conjunto de dados.
gcs_source_bucket {UNIQUE ID}-us O bucket do Cloud Storage que será usado para exportar da origem a tabela tabledest_bbucks do BigQuery
gcs_dest_bucket {UNIQUE ID}-eu O bucket do Cloud Storage que será usado para importar as tabelas do BigQuery para o destino

O comando gcloud composer executa o subcomando variables da CLI do Airflow. O subcomando transmite os argumentos para a ferramenta de linha de comando gcloud.

Para definir as três variáveis, você executará composer command uma vez para cada linha da tabela acima. Este é o formato do comando:

gcloud composer environments run ENVIRONMENT_NAME \ --location LOCATION variables -- \ set KEY VALUE O seguinte erro do gcloud pode ser ignorado: (ERROR: gcloud crashed (TypeError): 'NoneType' object is not callable). Esse é um problema conhecido relacionado ao uso do comando gcloud composer environments run na versão 410.0.0 do gcloud. Suas variáveis ainda vão ser definidas, apesar da mensagem de erro.
  • ENVIRONMENT_NAME é o nome do ambiente.
  • LOCATION é a região do Compute Engine onde o ambiente está. Para executar o comando gcloud composer, é necessário incluir a sinalização --location ou a configuração do local padrão.
  • KEY e VALUE especificam a variável e o valor correspondente que você precisa definir. À esquerda do comando gcloud, adicione dois traços ( -- ) e depois os argumentos relacionados ao gcloud. Inclua os argumentos referentes ao subcomando do Airflow do lado direito. Dê um espaço entre os argumentos KEY e VALUE usando o comando gcloud composer environments run com o subcomando de variáveis.

Execute os comandos no Cloud Shell, trocando gcs_source_bucket e gcs_dest_bucket pelos nomes dos buckets criados na Tarefa 2.

gcloud composer environments run composer-advanced-lab \ --location {{{ project_0.default_region | "REGION" }}} variables -- \ set table_list_file_path /home/airflow/gcs/dags/bq_copy_eu_to_us_sample.csv gcloud composer environments run composer-advanced-lab \ --location {{{ project_0.default_region | "REGION" }}} variables -- \ set gcs_source_bucket {UNIQUE ID}-us gcloud composer environments run composer-advanced-lab \ --location {{{ project_0.default_region | "REGION" }}} variables -- \ set gcs_dest_bucket {UNIQUE_ID}-eu

Para ver o valor de uma variável, execute as variáveis do subcomando da CLI do Airflow com o argumento get ou use a IU do Airflow.

Por exemplo, execute o seguinte:

gcloud composer environments run composer-advanced-lab \ --location {{{ project_0.default_region | "REGION" }}} variables -- \ get gcs_source_bucket Observação: configure as três variáveis do Airflow usadas pelo DAG.

Tarefa 9: fazer upload do DAG e das dependências para o Cloud Storage

  1. Copie no seu Cloud Shell os arquivos de amostra de documentos de Python do Google Cloud:
cd ~ gcloud storage cp -r gs://spls/gsp283/python-docs-samples .
  1. Faça upload de uma cópia do hook e do operador de terceiros na pasta de plug-ins do seu bucket de DAGs do Composer armazenado no Cloud Storage:
gcloud storage cp -r python-docs-samples/third_party/apache-airflow/plugins/* gs://$DAGS_BUCKET/plugins
  1. Depois faça upload do DAG e do arquivo de configuração no bucket de DAGs no Cloud Storage do seu ambiente:
gcloud storage cp python-docs-samples/composer/workflows/bq_copy_across_locations.py gs://$DAGS_BUCKET/dags gcloud storage cp python-docs-samples/composer/workflows/bq_copy_eu_to_us_sample.csv gs://$DAGS_BUCKET/dags

O Cloud Composer registra o DAG automaticamente no seu ambiente do Airflow. As alterações no DAG levam de 3 a 5 minutos para serem feitas. É possível conferir o status da tarefa na interface da Web do Airflow e confirmar se o DAG não está programado de acordo com as configurações.

Tarefa 10. conhecer a interface do Airflow

Para acessar a interface da Web do Airflow pelo console do Cloud, siga estas etapas:

  1. Volte para a página Ambientes do Composer.
  2. Na coluna Servidor da Web do Airflow para o ambiente, clique no link Airflow.

Link Airflow destacado na coluna de servidores da Web do Airflow

  1. Clique nas suas credenciais do laboratório.
  2. A interface da Web do Airflow é aberta em uma nova janela do navegador. Os dados ainda estarão sendo carregados nesta etapa. Você pode continuar com o laboratório enquanto isso.

Como conferir as variáveis

As variáveis já definidas são mantidas no seu ambiente.

  • Para conferir as variáveis, selecione Admin > Variables na barra de menus do Airflow.

Página das variáveis

Como acionar o DAG manualmente

  1. Clique na guia DAGs e aguarde os links serem carregados.

  2. Para acionar o DAG manualmente, clique no botão de reprodução para composer_sample_bq_copy_across_locations:

Botão &quot;Acionar DAG&quot;

  1. Clique em Acionar DAG para confirmar a ação.

Clique em Verificar meu progresso para conferir o objetivo.

Como fazer upload do DAG e das dependências para o Cloud Storage

Como o DAG é executado

O Cloud Composer analisa seu arquivo DAG durante o upload para a pasta de DAGs no Cloud Storage. Se nenhum erro for encontrado, o nome do fluxo de trabalho vai aparecer na lista de DAGs. Em seguida, o fluxo de trabalho vai entrar na fila para execução imediata se as condições de programação forem atendidas. Neste caso, nenhuma foi configurada.

Quando o botão de reprodução é pressionado, o status das Execuções fica verde:

Status verde das execuções do DAG

  1. Clique no nome do DAG para abrir a página de detalhes correspondente. Nela, você encontra uma representação gráfica das tarefas e das dependências do fluxo de trabalho.

Visualização em árvore do DAG

  1. Na barra de ferramentas, clique em Gráfico e passe o ponteiro do mouse sobre o gráfico das tarefas para conferir o status de cada uma. A borda das tarefas também indica o status: verde = em execução, vermelha = falha etc.

Visualização do DAG

Para executar o fluxo de trabalho outra vez na visualização Graph:

  1. Na visualização Graph na IU do Airflow, clique no gráfico start.
  2. Clique em Clear para redefinir todas as tarefas e depois em OK para confirmar.

Caixa de diálogo &quot;Iniciar&quot;

Enquanto o processo está em execução, atualize seu navegador e confira as informações mais recentes.

Tarefa 11: validar os resultados

Agora verifique o status e os resultados do fluxo de trabalho nas seguintes páginas do Console do Cloud:

  • As tabelas exportadas foram copiadas do bucket dos EUA para o bucket do Cloud Storage na UE. Clique em Cloud Storage para ver os arquivos Avro intermediários nos buckets de origem (EUA) e de destino (UE).
  • As tabelas da lista foram importadas para o conjunto de dados de destino do BigQuery. Clique em BigQuery e depois no nome do seu projeto e no conjunto de dados nyc_tlc_EU para confirmar que as tabelas podem ser acessadas pelo conjunto de dados que você criou.

Excluir ambiente do Cloud Composer

  1. Retorne à página Ambientes no Composer.
  2. Marque a caixa de seleção ao lado do ambiente do Composer.
  3. Clique em EXCLUIR.
  4. Confirme o pop-up clicando em EXCLUIR novamente.

Parabéns!

Você copiou de forma programática as tabelas localizadas nos EUA para a UE. Este laboratório é baseado na postagem do blog de David Sabater Dinter.

Próximas etapas

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 12 de março de 2024

Laboratório testado em 12 de março de 2024

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.