La différence entre le Texte et la Chaîne dans Hadoop
Quelle est la différence entre org.apache.hadoop.io.Text
et java.lang.String
dans le framework Hadoop?
Pourquoi ne pourraient-ils pas utiliser String
au lieu d'introduire une nouvelle Text
classe?
J'ai fait la différence et a découvert qu'il a à faire avec le format d'encodage; cependant je ne le comprends pas encore.
Quelqu'un peut m'expliquer les différences (avec des exemples, le cas échéant)?
L'utilisation principale du Texte de la classe est qu'il fournit la sérialisation et la désérialisation de l'interface qui aide lorsque vous envoyez les données sur le réseau, tandis que les cordes ont des fonctionnalités limitées.Bref, c'est une chaîne avec des fonctionnalités supplémentaires.
Regardez ici, avec des exemples sur les différences. javaonfingertips.blogspot.dans/2016/01/...
Regardez ici, avec des exemples sur les différences. javaonfingertips.blogspot.dans/2016/01/...
OriginalL'auteur loki | 2013-11-08
Vous devez vous connecter pour publier un commentaire.
La représentation binaire d'un objet Texte est d'une longueur variable de type entier contenant
le nombre d'octets en UTF-8 représentation de la chaîne, suivie de l'UTF-8
octets eux-mêmes.
Texte est un remplacement pour l'UTF8 classe, ce qui était déjà obsolète
parce qu'il ne prend pas en charge les chaînes dont l'encodage est plus de 32 767 octets, et parce que
il a utilisé de Java est modifié UTF-8.
En outre, le Texte utilise la norme UTF-8, ce qui le rend potentiellement plus facile à inter opérer avec d'autres outils de comprendre UTF-8.
Suivants sont quelques-uns des différences dans les brèves liées à son fonctionnement à l'égard de la Chaîne:
Indexation:
En raison de son accent sur l'utilisation de la norme UTF-8, il y a quelques différences
entre le Texte et la Java de la classe String. L'indexation du Texte de la classe est en termes de position dans la séquence d'octets codés, pas de caractères Unicode dans la chaîne, ou la Java
char code unité (comme il l'est pour la Chaîne).
Par exemple,
charAt()
retourne un int qui représente un point de code Unicode, contrairement à laChaîne variante qui retourne un char.
Itération:
Itération sur les caractères Unicode dans le Texte est compliqué par l'utilisation de l'octet
les compensations pour l'indexation, puisque vous ne pouvez pas simplement incrémenter l'index.
Mutable:
Une autre différence avec de la Ficelle, c'est que le Texte est mutable (comme tous les Inscriptible implémentations dans Hadoop, sauf NullWritable, qui est un singleton). Vous pouvez réutiliser un
Instance de texte en appelant l'une des méthodes set ().
De recourir à la Chaîne:
Texte n'est pas aussi riche d'une API permettant de manipuler les chaînes de caractères comme
java.lang.String
, de sorte que dans de nombreux cas, vous avez besoin de convertir l'objet Texte dans une Chaîne de caractères.Cela se fait de la manière habituelle, à l'aide de la
toString()
méthode:Pour plus de détails, lire guide définitif.
java.lang.String
àText
alors?Trouvé,
val t = new Text(s)
. btw, je suis en ScalaOriginalL'auteur SSaikia_JtheRocker