Existe uma maneira simples de migrar de SequenceFiles para AVRO?
-
21-12-2019 - |
Pergunta
Atualmente estou usando trabalhos de Hadoop MapReduce com SequenceFiles de Write. O mesmo tipo gravável é usado para a serialização também nas partes relacionadas ao sistema não hadoop do sistema.
Este método é difícil de manter - principalmente por causa da falta de esquema e a necessidade de manuseio manual de alterações de versão.
Parece que o Apache AVRO lida com essas questões.
O problema é que, durante a migração, terei dados em ambos os formatos. Existe uma maneira simples de lidar com a migração?
Solução
Geralmente, não há nada que impeça você usando dados do AVRO e seqüência de forma intercalada. Use qualquer entrada é necessário para o tipo de dados que você precisa, e para a saída, é claro que faz sentido usar os formatos AVRO sempre que prática. Se a sua entrada estiver em formatos diferentes, dê uma olhada em Multipleinputs . Essencialmente, você ainda terá que implementar maphers separados, mas isso deve ser expectado, considerando a chave / valor de entrada do mapa é diferente.
Movendo-se para AVRO é um movimento sábio. Se você tiver a capacidade de tempo e hardware, pode até ser valioso para converter explicitamente seus dados do SequenceFile para Avro imediatamente. Você pode usar qualquer idioma suportado pela Avro, que também aconteça para suportar SequenceFiles para fazer isso. Java certamente faz (claramente), mas o porco também é bem útil para fazer isso.
O projeto de Piggybank contribuído pelo usuário tem funcionalidade para ler um seqüênciafile e, em seguida, é simplesmente uma questão de usar avrostorage do mesmo projeto piggybank com o esquema AVRO apropriado para obter o seu arquivo Avro.
Se apenas porco suportou o carregamento de esquemas AVRO do arquivo ..! Se você usar porco, infelizmente, você terá que formar scripts que contêm explicitamente o esquema Avro, que pode ser um pouco irritante.
Outras dicas
Eu não tentei isso sozinho, mas talvez usar o formato AvroSequenceFile
ajudaria.É apenas um invólucro em torno de SequenceFile
assim em teoria você deve ser capaz de gravar dados no seu formato antigo SequenceFile
, bem como seu novo formato de Avro
que deve facilitar a migração.
Aqui é Mais informações Sobre este formato.