Como faço para controlar nome arquivos de saída e conteúdo de um trabalho de streaming Hadoop?

StackOverflow https://stackoverflow.com/questions/887835

Pergunta

Existe uma maneira de controlar os nomes de arquivos de um trabalho Hadoop Transmissão de saída? Especificamente gostaria conteúdo arquivos de saída do meu trabalho e nome a ser organizado pela ket as saídas redutor -. Cada arquivo só iria conter valores para uma chave e seu nome seria a chave

Update: Só encontrei a resposta - Usando uma classe Java que deriva de MultipleOutputFormat como o formato de saída empregos permite o controle dos nomes dos arquivos de saída. http: //hadoop.apache .org / core / docs / current / api / org / apache / hadoop / mapred / lib / MultipleOutputFormat.html

Eu não vi quaisquer amostras para este lá fora ... Pode apontar ninguém de fora a uma amostra Hadoop Streaming de que faz uso de um formato de saída personalizado classe Java?

Foi útil?

Solução

Usando uma classe Java que deriva de MultipleOutputFormat como o formato de saída empregos permite o controle dos nomes dos arquivos de saída. http: //hadoop.apache .org / core / docs / current / api / org / apache / hadoop / mapred / lib / MultipleOutputFormat.html

Ao usar o Hadoop Streaming, já que apenas um JAR é suportada você realmente tem que desembolsar o frasco de streaming e colocar suas novas classes de formato de saída nele para streaming de postos de trabalho para ser capaz de fazer referência a ela ...

EDIT: A partir da versão 0.20.2 do Hadoop esta classe tornou-se obsoleta e agora você deve usar: http: // hadoop .apache.org / docs / mapreduce / current / api / org / apache / Hadoop / MapReduce / lib / saída / MultipleOutputs.html

Outras dicas

Em geral, Hadoop teria se considera todo o diretório para ser a saída, e não um arquivo individual. Não há nenhuma maneira de controlar diretamente o nome do arquivo, seja através de Streaming ou empregos Java regulares.

No entanto, nada está parando de fazer isto dividindo e renomeando-se, após o trabalho ter terminado. Pode $ dfs Hadoop -cat path / to / your / saída / diretório / parcial *, e tubo que a um roteiro seu que se divide o conteúdo por chaves e escreve-o para novos arquivos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top