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

Nesta página, você verá como configurar o ambiente de desenvolvimento do Python, obter o SDK do Apache Beam para Python e executar e modificar um pipeline 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 Cloud, na página do seletor de projetos, selecione ou crie um projeto do Cloud.

    Acessar a página do seletor de projetos

  3. Verifique se a cobrança está ativada para o seu projeto do Google Cloud. Saiba como confirmar se a cobrança está ativada para o seu 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.

      Observação: o campo Papel autoriza sua conta de serviço a acessar recursos. É possível visualizar e alterar esse campo mais tarde usando o Console do Cloud. Se você estiver desenvolvendo um aplicativo de produção, especifique permissões mais granulares do que Projeto > Proprietário. Para mais informações, consulte Como atribuir papéis a contas de serviço.
    5. Clique em Criar. O download de um arquivo JSON que contém a chave é feito no 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 intervalo 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 o Python versão 2.7, 3.5, 3.6 ou 3.7. 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. Em 7 de outubro de 2020, o Dataflow deixará de oferecer suporte a pipelines usando o Python 2. Leia mais informações na página de suporte do Python 2 no Google Cloud.

  3. Instale um ambiente virtual do Python para fazer os experimentos iniciais. Se você não tem a virtualenv versão 13.1.0 ou mais recente, as etapas de instalação para seu sistema operacional podem ser encontradas em Como instalar e usar a ferramenta virtualenv.

    Para configurar e ativar um novo ambiente virtual, execute:

    python -m virtualenv env
        source env/bin/activate
    Para este guia de início rápido, use um ambiente virtual. 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. 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. Você define esses pipelines com um programa do Apache Beam e pode 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 intervalo do Cloud Storage com o nome de 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 de 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 suas 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/wordcount/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 intervalo 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/wordcount/outputs*"  
Para ver os resultados desses arquivos, execute o comando a seguir:
    gsutil cat "gs://$BUCKET/wordcount/outputs*"

Para ver os resultado da IU de monitoramento:
  1. Abra a IU de monitoramento do Dataflow.
    Acesse 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 (em inglês)

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

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