如何在ArrayWritable中使用toArray()方法 - Hadoop

时间:2011-11-21 07:26:53

标签: hadoop

hadoop中的toArray()类中有一个ArrayWritable方法,它应该意味着:将此ArrayWritable转换为数组。但它的语法是:

public Object toArray()

那么我们应该如何使用这个功能呢? doc包上没有关于它的文档。

1 个答案:

答案 0 :(得分:3)

通常ArrayWritable必须适当延长

public class TextArrayWritable extends ArrayWritable {
    public TextArrayWritable() {
        super(Text.class);
    }
}

以下是ArrayWritable

中的代码
public ArrayWritable(Class<? extends Writable> valueClass) {
    if (valueClass == null) { 
        throw new IllegalArgumentException("null valueClass"); 
    }    
    this.valueClass = valueClass;
}

public Object toArray() {
    Object result = Array.newInstance(valueClass, values.length);
        for (int i = 0; i < values.length; i++) {
            Array.set(result, i, values[i]);
        }
       return result;
}

因此,ArrayWritable #toArray将返回TextArrayWritable的super(Text.class);或相应类中指定类型的java.lang.reflect.Array