首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

hadoop序列化自定义部类以及序列化对象比较解析

2013-06-26 
hadoop序列化自定义类型以及序列化对象比较解析?其中write方法依次将两个text序列化,readFields方法对来自

hadoop序列化自定义类型以及序列化对象比较解析

?其中write方法依次将两个text序列化,readFields方法对来自输入流的字节进行反序列化。

hashCode,equals,toString方法需要重写,其中hashCode方法通常被用作进行reduce分区,所以应该确保其有比较好的算法来实现平均分配。

?

下面来说一下比较,比较对于mapreduce来说是比较关键的,因为中间有急于键的排序操作。通常来说可以通过类中的compareTo方法对其进行反序列化,然后再进行比较,但是这样来说中间又多了一步,那有没有可以直接通过序列化对象来进行比较的方式呢,答案当然是有了,那就是继承自RawComparator

  public int comparable() throws IOException{  RawComparator comp = WritableComparator.get(TextPair.class);  byte[] out1 = serialize(tp1);  byte[] out2 = serialize(tp2);    return comp.compare(out1, 0, out1.length, out2, 0, out2.length);  }    public static byte[] serialize(Writable writable) throws IOException {    ByteArrayOutputStream out = new ByteArrayOutputStream();    DataOutputStream dataOut = new DataOutputStream(out);    writable.write(dataOut);    dataOut.close();    return out.toByteArray();  }

??

可以看到几乎所有的继承自WritableComparable的类都在其内部定义了静态的raw比较类,为快速比较提供了基础。

?

?

?

?

?

?

?

热点排行