设为首页 加入收藏

TOP

自定义实现Hadoop Key-Value
2014-11-24 08:10:22 来源: 作者: 【 】 浏览:1
Tags:定义 实现 Hadoop Key-Value

自定义实现Value


int responseSize = in.readInt();


String userIP = in.readUTF();


如果是实现了Writable接口的类型可以使用该类型的writereadFields方法进行数据的读写,例如:


Text name=new Text();


name.readFields(in);


注意事项:


(1)如果过实现接口Writable的自定义类型包含构造函数,一定需要书写参数为空的自定义函数(2)如果Hadoop应用采用了TextOutputFormat作为输出格式并且采用了自定义Key或者Value,因为TextOutputFormat采用valuetoString方法进行最后结果的输出,因此在自定义Writable的时候需要根据需要实现一个有意义的toString方法(3)当Hadoop进行输入处理的时候,Hadoop一般会重复使用keyvalue对象,主要注意上一次读取的数据会不会对本次处理产生影响。



自定义实现Key:


作为Hadoop Key,需要具备比较功能,以便hadoop进行分区和排序。因此,Key需要实现两个接口,一个是Writable接口;一个是WritableComparable接口。WritableComparable增加了一个compareTo方法,用来进行对象的比较。


注意事项:


一般情况下采用compareTo方法就能满足应用需求,但是该方法需要将二进制数据反序列化成对象,因此性能不是特别高。为此,Hadoop一般为每一种Writable类型提供一种RawComparator,用来进行二进制数据的比较。如果需要使用RawComparator,则首先需要继承WritableComparator并自定义实现其中的compare方法;然后,通过 WritableComparator.define(IntWritable.class, new Comparator())方法完成该类对应比较程序的注册。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Lua基础 表达式 下一篇Java中Runtime.getRuntime().exec..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·C语言中,“指针”用 (2025-12-26 15:20:18)
·在c语言的指针运算中 (2025-12-26 15:20:15)
·C语言-函数指针与函 (2025-12-26 15:20:12)
·求navicat for mysql (2025-12-26 13:21:33)
·有哪位大哥推荐一下m (2025-12-26 13:21:30)