Guia de início rápido sobre o uso do Python

Nesta página, você verá como configurar o ambiente de desenvolvimento do Python, conseguir o SDK do Apache Beam para Python e executar e modificar um pipeline de exemplo.

Outra opção para aprender a criar e executar um pipeline do Apache Beam é desenvolver um pipeline interativamente usando um notebook do Apache Beam. Se você já tiver um projeto do Google Cloud configurado, o pipeline de exemplo wordcount neste guia de início rápido está disponível como um notebook de exemplo.

Antes de começar

  1. Faça login na sua conta do Google.

    Se você ainda não tiver uma, inscreva-se.

  2. No Console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar a página do seletor de projetos

  3. Verifique se o faturamento está ativado para seu projeto na nuvem. Saiba como confirmar se o faturamento está ativado para o projeto.

  4. Ative as APIs Cloud Dataflow, Compute Engine, Stackdriver Logging, Cloud Storage, Cloud Storage JSON, BigQuery, Cloud Pub/Sub, Cloud Datastore e Cloud Resource Manager.

    Ative as APIs

  5. Crie uma conta de serviço:

    1. No Console do Cloud, acesse a página Criar conta de serviço.

      Acesse Criar conta de serviço
    2. Selecione um projeto.
    3. No campo Nome da conta de serviço, insira um nome. O Console do Cloud preenche o campo ID da conta de serviço com base nesse nome.

      No campo Descrição da conta de serviço, insira uma descrição. Por exemplo, Service account for quickstart.

    4. Clique em Criar.
    5. Clique no campo Selecionar um papel.

      Em Acesso rápido, clique em Básico e em Proprietário.

    6. Clique em Continuar.
    7. Clique em Concluído para terminar a criação da conta de serviço.

      Não feche a janela do navegador. Você vai usá-lo na próxima etapa.

  6. Crie uma chave de conta de serviço:

    1. No Console do Cloud, clique no endereço de e-mail da conta de serviço que você criou.
    2. Clique em Chaves.
    3. Clique em Adicionar chave e em Criar nova chave.
    4. Clique em Criar. O download de um arquivo de chave JSON é feito no seu computador.
    5. Clique em Fechar.
  7. Defina a variável de ambiente GOOGLE_APPLICATION_CREDENTIALS como o caminho do arquivo JSON que contém a chave da conta de serviço. Essa variável só se aplica à sessão de shell atual. Dessa maneira, se você abrir uma nova sessão, defina a variável novamente.

  8. Crie um bucket do Cloud Storage:
    1. No Console do Cloud, acesse a página Navegador do Cloud Storage.

      Acessar a página "Navegador do Cloud Storage"

    2. Clique em Criar bucket.
    3. Na caixa de diálogo Criar bucket, especifique os seguintes atributos.
      • Nome: um nome de bucket exclusivo. Não inclua informações confidenciais no nome do bucket: o namespace é global e visível ao público.
      • Classe de armazenamento padrão: Standard
      • Um local onde os dados do bucket serão armazenados.
    4. Clique em Criar.

Configure o ambiente

Este guia de início rápido usa um prompt de comando. Caso você não tenha um prompt de comando disponível, use o Cloud Shell. O Cloud Shell já tem o gerenciador de pacotes do Python instalado, portanto, é possível pular a etapa 1 do procedimento a seguir.
  1. Use o SDK do Apache Beam para Python com pip e as versão 3.6, 3.7 ou 3.8. do Python. Verifique se você tem uma instalação do Python e pip em funcionamento executando o seguinte comando:
    python --version
    python -m pip --version
    Caso você não tenha o Python, as etapas de instalação para seu sistema operacional podem ser encontradas na página de instalação do Python.
  2. O Dataflow não é mais compatível com pipelines que usam o Python 2. Leia mais informações na página de suporte do Python 2 no Google Cloud.

  3. Configure e ative um ambiente virtual Python para este guia de início rápido.

    Depois de concluir o guia de início rápido, execute deactivate para desativar o ambiente virtual.

Leia mais sobre como usar Python no Google Cloud na página Configurando um ambiente de desenvolvimento em Python.

Observação: para melhores resultados, inicie os pipelines do Python 3 com o Apache Beam 2.16.0 ou posterior. A versão 2.24.0 do SDK do Apache Beam era a última versão compatível com o Python 2 e o Python 3.5. Para receber um resumo com as melhorias recentes do Python 3 no Apache Beam, consulte o rastreador de problemas do Apache Beam.

Instale o SDK do Apache Beam

O SDK do Apache Beam é um modelo de programação de código aberto para pipelines de dados. Esses pipelines são definidos usando um programa do Apache Beam, e é possível escolher um executor, como o Dataflow, para executar o pipeline.

Instale a versão mais recente do SDK do Apache Beam para Python executando o seguinte comando em um ambiente virtual:

pip install 'apache-beam[gcp]'

Executar WordCount localmente

O exemplo wordcount do WordCount demonstra um pipeline que executa as seguintes etapas:
  1. Usa um arquivo de texto como entrada.
  2. Analisa cada linha na forma de palavras.
  3. Realiza uma contagem de frequência com base nas palavras tokenizadas.

Execute o módulo wordcount a partir do pacote apache_beam em sua máquina local com o seguinte comando:

python -m apache_beam.examples.wordcount \
  --output outputs
Este arquivo de texto está localizado em um bucket do Cloud Storage com o nome do recurso gs://dataflow-samples/shakespeare/kinglear.txt. Para ver a resposta, execute o seguinte comando:
more outputs*

Para sair, pressione a tecla q.

Executar o pipeline localmente permite testar e depurar o programa Apache Beam. O código-fonte do wordcount.py pode ser visualizado no GitHub do Apache Beam.

Executar WordCount no serviço Dataflow

É possível executar o módulo wordcount a partir do pacote apache_beam no serviço Dataflow especificando DataflowRunner no campo runner e selecionando uma região para o pipeline ser executado.

Primeiro, defina as variáveis PROJECT, BUCKET e REGION:

PROJECT=PROJECT_ID
BUCKET=GCS_BUCKET
REGION=DATAFLOW_REGION
Substitua:
  • PROJECT_ID: um ID de projeto exclusivo.
  • GCS_BUCKET: um nome exclusivo para o bucket do Cloud Storage.
  • DATAFLOW_REGION: a região em que seu projeto está localizado.
Execute o pipeline usando o seguinte comando:
python -m apache_beam.examples.wordcount \
  --region $REGION \
  --input gs://dataflow-samples/shakespeare/kinglear.txt \
  --output gs://$BUCKET/results/outputs \
  --runner DataflowRunner \
  --project $PROJECT \
  --temp_location gs://$BUCKET/tmp/

Ver os resultados

Quando você executa um pipeline usando o Dataflow, os resultados são armazenados em um bucket do Cloud Storage. Use o terminal local ou o Console do Cloud para ver os resultados.

Para ver os resultados do terminal, use a ferramenta gsutil.

Liste os arquivos de saída executando o seguinte comando no terminal:
gsutil ls -lh "gs://$BUCKET/results/outputs*"  
Veja os resultados nos arquivos de saída executando o seguinte comando no terminal:
gsutil cat "gs://$BUCKET/results/outputs*"
Para ver os resultados no Console do Cloud, siga estas etapas:
  1. Abra a página de monitoramento do Dataflow no Console do Cloud.
    Acessar jobs do Dataflow

    A página Jobs lista os detalhes de todos os jobs disponíveis, incluindo o status.

    Você verá o job wordcount com um Status de Execução primeiramente e depois Finalizado.

  2. Abra o navegador do Cloud Storage no Console do Cloud.
    Ir para o navegador do Cloud Storage

    A página Navegador do Cloud Storage exibe a lista de todos os buckets de armazenamento do projeto.

  3. Clique no bucket de armazenamento que você criou.

    No diretório wordcount, você verá os arquivos de saída criados pelo seu job.

Modificar o código do pipeline

Nos exemplos anteriores, o pipeline wordcount diferencia letras maiúsculas e minúsculas. O tutorial a seguir demonstra como modificar o pipeline do WordCount para que ele não faça essa diferenciação.
  1. Faça o download da cópia mais recente do código wordcount no repositório do Apache Beam no GitHub.
  2. Execute o pipeline em sua máquina local:
    python wordcount.py --output outputs
  3. Para ver os resultados, execute o comando a seguir:
    more outputs*
    Para sair, pressione a tecla q.
  4. Abra o arquivo wordcount.py no editor de sua preferência.
  5. Examine as etapas do pipeline dentro da função run. Depois de split, as linhas são divididas em palavras como strings.
    counts = (lines
              | 'split' >> (beam.ParDo(WordExtractingDoFn())
                            .with_output_types(unicode))
              | 'pair_with_one' >> beam.Map(lambda x: (x, 1))
              | 'group' >> beam.GroupByKey()
              | 'count' >> beam.Map(count_ones))
  6. Modifique a linha após split para que as strings apareçam em letras minúsculas.
    counts = (lines
              | 'split' >> (beam.ParDo(WordExtractingDoFn())
                            .with_output_types(unicode))
              | 'lowercase' >> beam.Map(unicode.lower)     # Add this line to modify the pipeline
              | 'pair_with_one' >> beam.Map(lambda x: (x, 1))
              | 'group' >> beam.GroupByKey()
              | 'count' >> beam.Map(count_ones)) 
    Essa modificação mapeia a função str.lower em todas as palavras. Essa linha é equivalente a beam.Map(lambda word: str.lower(word)).
  7. Salve o arquivo e execute o job modificado wordcount em sua máquina local:
    python wordcount.py --output outputs
  8. Para ver os resultados do pipeline modificado, execute o comando a seguir:
    more outputs*
    Para sair, pressione a tecla q.

Limpar

Para evitar cobranças em sua conta do Google Cloud pelos recursos usados neste guia de início rápido, siga estas etapas:

  1. No Console do Cloud, acesse a página Navegador do Cloud Storage.

    Acessar a página "Navegador do Cloud Storage"

  2. Clique na caixa de seleção do bucket que você quer excluir.
  3. Para excluir o bucket, clique em Excluir .

A seguir

Apache Beam™ é uma marca registrada da The Apache Software Foundation ou afiliadas nos Estados Unidos e/ou em outros países.