org.apache.hadoop.io.Text使用的问题

来由

在写mapreduce统计各ip访问次数时,ip是被封装成Text对象,在Reducer中向HBase写入数据,ip作为行键,在创建put对象时,直接将text.getBytes()作为构造方法参数,那么有时候rowKey就会跟原来ip不一致。

分析

根据调试分析,发现text中的字节数组长度为14,而当时有效的长度是13,最后一个字节是48,正好是0;为什么会导致这种情况呢?猜因为Context.nextKey()方法中,使用text.set(byte[],lnt,int)方法将下一个键的字节数组放置到字节数组中,而text.getBytes()是将整个字节数组返回

解决方法

在使用text.getBytes()的地方改为text.toString().getBytes()

猜你喜欢

转载自blog.csdn.net/flushest/article/details/66971701