Porque é que o Hadoop precisa de classes como texto ou escrita em vez de texto ou inteiro?

Porque é que o Hadoop precisa de introduzir estas novas classes? Eles apenas parecem complicar a interface

 28
Author: Casebash, 2013-10-18

4 answers

Para lidar com os objectos em Hadoop. Por exemplo, hadoop usa Text em vez de java String. A classe Text do hadoop é semelhante a um java String, no entanto, Text implementa interfaces como Comparable, Writable e WritableComparable

Estas interfaces são todas necessárias para o MapReduce; a interface Comparable é usada para comparar quando o redutor ordena as chaves, e Writable pode escrever o resultado para o disco local. Ele não usa o java Serializable porque java Serializable é muito grande ou muito grande pesado para hadoop, Writable pode ser serializável o objeto hadoop de uma forma muito leve.

 36
Author: Winston, 2016-05-14 00:11:24

Porque em um grande mundo de dados, objetos estruturados precisam ser serializados para um fluxo de bytes para se mover sobre a rede ou persistir para o disco no cluster...e depois voltou a ser desertificado, se necessário. Quando você tem uma grande quantidade de dados, como a escala do Facebook para armazenar e mover, seus dados precisam ser eficientes e tomar o menor espaço possível para armazenar e tempo para se mover.

String e Integer são simplesmente demasiado "gordos"."Text e IntWritable, respectivamente, fornecem uma abstracção muito mais fácil sobre topo das matrizes de bytes que representam o mesmo tipo de informação.

 25
Author: Vidya, 2013-10-18 03:49:03

Mais algumas boas informações:

Eles têm duas características que são relevantes.

Eles têm a interface "Writable" - eles sabem como escrever para um fluxo de DataOutput e ler a partir de um fluxo de DataInput-explicitamente.

Eles têm os seus conteúdos actualizados através da operação set (). Isto permite-lhe reutilizar o mesmo valor, repetidamente, sem criar novas instâncias. É muito mais eficiente se o mesmo mapeador ou redutor é chamado repetidamente: você apenas criar suas instâncias do writables in the constructor and reuse them

Em comparação, o framework serializável de Java" magicamente " serializa objetos-mas ele o faz de uma forma que é um pouco frágil e é geralmente impossível de ler em valores gerados por versões mais antigas de uma classe. o fluxo de objetos Java é projetado para enviar um grafo de objetos de volta -ele tem que lembrar cada referência de objeto empurrado para fora já, e fazer o mesmo no caminho de volta. Os writables são projetados para ser self contained.

Isto é ... de: http://hortonworks.com/community/forums/topic/why-hadoop-uses-default-longwritable-or-intwritable/
 1
Author: killjoy, 2015-03-12 14:51:16

Da documentação Apache Página:

Writable a interface é descrita como

Um objecto serializável que implementa um protocolo de serialização simples, eficiente, baseado em DataInput e DataOutput.

Com esta nova API, não tens complicações. O processo de serialização com estas novas classes é crisp e compact.

Para a eficácia do Hadoop, o processo de serialização/de-serialização deve ser optimizado porque um grande número de chamadas remotas acontecem entre os nós no grupo. Então o formato de serialização deve ser rápida, compacta, extensível e interoperável. Devido a esta razão, o framework Hadoop surgiu com uma classe IO para substituir os tipos de dados primitivos java. por exemplo, IntWritbale para int, LongWritable para long, Text para String, etc.

Você pode encontrar mais detalhes sobre este tópico em Hadoop the definitive guide: 4th Edition

 1
Author: Ravindra babu, 2016-05-16 16:21:47