Diferença entre texto e texto no Hadoop

Qual é a diferença entre org.apache.hadoop.io.Text e java.lang.String no quadro Hadoop?

Porque é que eles não podiam usar String em vez de introduzirem uma nova classe Text?

investiguei a diferença e descobri que tem a ver com o formato de codificação; no entanto, ainda não a entendo.

alguém pode explicar as diferenças (com exemplos, se aplicável)?

Author: AST, 2013-11-08

1 answers

A representação binária de um objecto de texto é um número inteiro de comprimento variável que contém o número de bytes na representação UTF-8 da cadeia, seguido pelo UTF-8 os próprios bytes.

O texto é um substituto para a classe UTF8, que foi desactualizada porque não suportava strings cuja codificação era mais de 32.767 bytes, e porque ele usou o UTF-8 modificado do Java.

Além disso, o texto utiliza a norma UTF-8, o que torna potencialmente mais fácil operar com Outras ferramentas que entendem UTF-8.

A seguir estão algumas das diferenças em breve relacionadas com o seu funcionamento no que diz respeito ao texto:

Indexação: Devido à sua ênfase no uso do padrão UTF-8, existem algumas diferenças entre texto e a classe Java String. Indexação para a classe de texto é em termos de posição na sequência de byte codificado, não o carácter Unicode na cadeia, ou o Java char code unit (as it is for String).

Por exemplo:, charAt() devolve um int que representa um ponto de código Unicode, ao contrário do String variant that returns a char.

Iteração: Iterar os caracteres Unicode em texto é complicado pelo uso de byte compensações para indexação, uma vez que você não pode simplesmente aumentar o índice.

Mutável: Outra diferença com String é que o texto é mutável (como todas as implementações Writíveis em Hadoop, exceto NullWritable, que é um singleton). Você pode reutilizar um Instância de texto por chamando um dos métodos set()nele.

A usar o texto:

O texto não tem uma API tão rica para manipular cordas como java.lang.String, então em muitos casos, você precisa converter o objeto de texto para uma cadeia de caracteres. Isto é feito da forma habitual, usando o método toString():

Para mais detalhes, leia o guia definitivo.
 20
Author: SSaikia_JtheRocker, 2013-11-08 06:01:01