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
-
Faça login na sua conta do Google.
Se você ainda não tiver uma, inscreva-se.
-
No Console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Verifique se o faturamento está ativado para seu projeto na nuvem. Saiba como confirmar se o faturamento está ativado para o projeto.
- Ative as APIs Cloud Dataflow, Compute Engine, Stackdriver Logging, Cloud Storage, Cloud Storage JSON, BigQuery, Cloud Pub/Sub, Cloud Datastore e Cloud Resource Manager.
-
Configurar a autenticação:
-
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" - Na lista Conta de serviço, selecione Nova conta de serviço.
- No campo Nome da conta de serviço, insira um nome.
Na lista Papel, selecione Projeto > Proprietário.
- Clique em Criar. O download de um arquivo JSON que contém sua chave é feito no seu computador.
-
-
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. - Crie um bucket do Cloud Storage:
- No Console do Cloud, acesse a página Navegador do Cloud Storage.
- Clique em Criar bucket.
- 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.
- Clique em Criar.
Configure o ambiente
-
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 epip
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. - 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.
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.
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:- Usa um arquivo de texto como entrada.
- Analisa cada linha na forma de palavras.
- 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 outputsEste 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 dowordcount.py
pode ser visualizado no GitHub do Apache Beam.
Executar WordCount no serviço Dataflow
Você pode executar o módulowordcount
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_REGIONUse 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:
- Abra a IU de monitoramento do Dataflow.
Acessar a IU da Web do DataflowVocê verá o job wordcount, primeiramente com o status Em execução e depois Finalizado:
- Abra o navegador do Cloud Storage no Console do Google Cloud.
Acessar o navegador do Cloud StorageNo diretório
wordcount
, você verá os arquivos de saída criados pelo seu job:
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.- Faça o download da cópia mais recente do código
WordCount
no repositório do Apache Beam no GitHub. - Execute o pipeline em sua máquina local:
python wordcount.py --output outputs
- Para ver os resultados, execute o comando a seguir:
more outputs*
Para sair, pressione a tecla q. - Abra o arquivo
wordcount.py
no editor de sua preferência. - Examine as etapas do pipeline dentro da função
run
. Depois desplit
, 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))
- 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çãostr.lower
em todas as palavras. Essa linha é equivalente abeam.Map(lambda word: str.lower(word))
. - Salve o arquivo e execute o job modificado do WordCount em sua máquina local:
python wordcount.py --output outputs
- 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:
- No Console do Cloud, acesse a página Navegador do Cloud Storage.
- Clique na caixa de seleção do bucket que você quer excluir.
- Para excluir o bucket, clique em Excluir delete.
A seguir
- Saiba mais sobre o modelo de programação do Apache Beam.
- Saiba como projetar e criar seu próprio canal.
- Trabalhe nos exemplos do WordCount e Mobile Gaming.