Hadoop的text通过set(Text t)或set(String s),getLength与getBytes().length的值可能不同的原因

来源:互联网 发布:手机淘宝快速秒杀器 编辑:程序博客网 时间:2024/06/08 06:28

示例1:

Text t = new Text("hadoopp");
t.set(new Text("pig"));
byte[] b = t.getBytes();
for (byte bb : b)
System.out.print(bb + " ");
System.out.println();
System.out.println(t.getLength());
System.out.println(b.length);
System.out.println(t.toString());

输出如下:

112 105 103 111 111 112 112 
3
7
pig

示例2:

更改上例的t对象为“ha”的text对象;

输出如下:

112 105 103 
3
3
pig


个人总结:

text的set(Text  tt)方法是将tt复制到t对象中,当t初始长度大于tt的长度时getBytes().length会保留t的初始长度,当t的初始长度小于tt的长度时getBytes().length的长度按tt的长度算,而getLength()算的是各自的字符数。

一句话:用了set(Text  tt)函数时,getBytes().length的长度按两者中较长的算。

注意:set(string s)的getLength与getBytes().length的值是一样的!

0 0
原创粉丝点击