机器学习和生物信息学实验室联盟

标题: Hadoop中使用ArrayWritable作为value的扩展异常处理 [打印本页]

作者: hsc    时间: 2013-11-3 17:40
标题: Hadoop中使用ArrayWritable作为value的扩展异常处理
作为曾经比较早接触Hadoop的一员,现在看到自己都落后大家一个环岛路那么远了,说起来甚是惭愧,因为毕业设计跟这个相关,所以就再次捡起来了,一些写程序中遇到的问题,说来大家分享一下,如果大家都已经碰到这个问题了,并且觉得好弱的问题,就不要喷我了,理解一下作为学术上的小学弟吧!

一般都知道Hadoop里的是<Key, Value>对,如果我想扩展成一个<Key, Value[]>时该怎么办呢,很巧的是Hadoop提供了一个ArrayWritable类可以实现,但是问题来了,很多时候,我们使用了这个类,但是发现map的输出并没有收集到数据,而且会报java.lang.RuntimeException: java.lang.NoSuchMethodException: org.apache.hadoop.io.ArrayWritable.<init>()的异常信息,经过网上一些大牛的提点,发现Hadoop在实现ArrayWritable的时候,并不会提供一个默认的构造函数,因此,我们需要重写这个类,使用super构造一下就可以了。
  1. public class NewArrayWritable extends ArrayWritable {
  2.   public NewArrayWritable() {
  3.     super(IntWritable.class);
  4.   }
  5. }
复制代码
因为ArrayWritable构造函数里是需要一个Writable的某个子类来初始化的,所以可以根据自己需要随便改。

以上纯属小问题,不喜勿喷!!!




欢迎光临 机器学习和生物信息学实验室联盟 (http://123.57.240.48/) Powered by Discuz! X3.2