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 do WordCount neste guia de início rápido estará 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. Configurar a autenticação:
    1. No Console do Cloud, acesse a página Criar chave da conta de serviço.

      Acessar página "Criar chave da conta de serviço"
    2. Na lista Conta de serviço, selecione Nova conta de serviço.
    3. No campo Nome da conta de serviço, insira um nome.
    4. Na lista Papel, selecione Projeto > Proprietário.

    5. Clique em Criar. O download de um arquivo JSON que contém sua chave é feito no seu computador.
  6. 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.

  7. 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

  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:
    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 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 as saídas, execute o comando a seguir:
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

Você pode executar o módulo wordcount do pacote apache_beam no serviço Dataflow especificando DataflowRunner no campo runner e selecionando uma região onde o pipeline será executado.

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

PROJECT=PROJECT_ID
BUCKET=GCS_BUCKET
REGION=DATAFLOW_REGION
Use o comando a seguir para executar o pipeline:
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/

Visualizar os resultados usando o GCP

Quando você executa um pipeline usando o Dataflow, seus resultados estão localizados em um bucket do Cloud Storage.

Use a ferramenta gsutil para ver os resultados a partir do seu terminal.

Para listar os arquivos de saída, execute o comando a seguir:

gsutil ls -lh "gs://$BUCKET/results/outputs*"  
Para ver os resultados desses arquivos, execute o comando a seguir:
gsutil cat "gs://$BUCKET/results/outputs*"

Para ver os resultado da IU de monitoramento:
  1. Abra a IU de monitoramento do Dataflow.
    Acessar a IU da Web do Dataflow

    Você verá o job wordcount, primeiramente com o status Em execução e depois Finalizado:

    Job do WordCount no Cloud Dataflow com status Succeeded.
  2. Abra o navegador do Cloud Storage no Console do Google Cloud.
    Acessar o navegador do Cloud Storage

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

    Diretório de resultados, com os arquivos de saída do job do WordCount.

Como modificar o código do pipeline

Nos exemplos anteriores, o pipeline do 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 do 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.