

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Processamento de dados com streaming
<a name="UseCase_Streaming"></a>

O streaming do Hadoop é um utilitário que vem com o Hadoop que permite desenvolver MapReduce executáveis em linguagens diferentes de Java. O Streaming é implementado como um arquivo JAR para que você possa executá-lo a na API do Amazon EMR ou na linha de comando, da mesma forma que executa um arquivo JAR padrão. 

Esta seção descreve como usar streaming com o Amazon EMR. 

**nota**  
O Apache Hadoop Streaming é uma ferramenta independente. Assim sendo, não descreveremos suas funções e parâmetros aqui. [Para obter mais informações sobre o streaming do Hadoop, acesse http://hadoop.apache. org/docs/stable/hadoop-streaming/HadoopStreaming.html](http://hadoop.apache.org/docs/stable/hadoop-streaming/HadoopStreaming.html).

## Utilização do utilitário Hadoop Streaming
<a name="HadoopStreamCommands"></a>

Esta seção descreve como usar o utilitário Hadoop Streaming.


**Processo do Hadoop**  

|  |  | 
| --- |--- |
| 1 | Escreva os programas executáveis do mapeador e do reducer na linguagem de programação de sua escolha.<br />Siga as instruções na documentação do Hadoop para escrever seus executáveis de streaming. Os programas devem ler os dados de entrada de uma entrada padrão e escrever os dados de saída em uma saída padrão. Por padrão, cada linha de entrada/saída representa um registro e o primeiro caractere de tabulação em cada linha é usado como um separador entre a chave e o valor. | 
| 2 | Teste os executáveis localmente e carregue-os para o Amazon S3. | 
| 3 | Use a interface da linha de comando do Amazon EMR ou o console do Amazon EMR para executar a aplicação. | 

Um script de mapeador é executado como um processo separado no cluster. Um executável do reducer transforma a saída de um executável do mapeador em uma saída de dados do fluxo de trabalho.

Os parâmetros `input`, `output`, `mapper` e `reducer` são necessários na maioria das aplicações de streaming. A tabela a seguir descreve esses e outros parâmetros opcionais.


| Parâmetro | Description | Obrigatório | 
| --- | --- | --- | 
| -input | Local dos dados de entrada no Amazon S3.<br />Tipo: string<br />Padrão: nenhum<br />Restrição: URI. Se não há protocolo especificado, ele usa o sistema de arquivos padrão do cluster.  | Sim | 
| -output | Local onde o Amazon EMR carrega os dados processados no Amazon S3.<br />Tipo: string<br />Padrão: nenhum<br />Restrição: URI<br />Padrão: se não há um local especificado, o Amazon EMR carrega os dados no local especificado pela `input`. | Sim | 
| -mapper | Nome do executável do mapeador.<br />Tipo: string<br />Padrão: nenhum | Sim | 
| -reducer | Nome do executável do reducer.<br />Tipo: string<br />Padrão: nenhum | Sim | 
| -cacheFile | Um local no Amazon S3 que contém os arquivos que o Hadoop vai copiar para o diretório de trabalho local (com o objetivo principal de melhorar a performance).<br />Tipo: string<br />Padrão: nenhum<br />Restrições: [URI]\#[nome do symlink a ser criado no diretório de trabalho]  | Não | 
| -cacheArchive | Arquivo JAR a ser extraído e colocado no diretório de trabalho<br />Tipo: string<br />Padrão: nenhum<br />Restrições: [URI]\#[nome do diretório do symlink a ser criado no diretório de trabalho]  | Não | 
| -combiner | Combina os resultados<br />Tipo: string<br />Padrão: nenhum<br />Restrições: nome da classe Java | Não | 

O código de exemplo a seguir é um executável do mapeador escrito em Python. Esse script faz parte do aplicativo WordCount de amostra.

```
 1. #!/usr/bin/python
 2. import sys
 3. 
 4. def main(argv):
 5.   line = sys.stdin.readline()
 6.   try:
 7.     while line:
 8.       line = line.rstrip()
 9.       words = line.split()
10.       for word in words:
11.         print "LongValueSum:" + word + "\t" + "1"
12.       line = sys.stdin.readline()
13.   except "end of file":
14.     return None
15. if __name__ == "__main__":
16.   main(sys.argv)
```