hadoop中接口可写时出错
我创建了一个类VectorWritable,它实现了接口Writable。我正试图将一个矢量可写对象写入输出文件,但得到以下结果:VectorWritable@1355b88b. 以下是我的写作方法:hadoop中接口可写时出错,hadoop,writable,Hadoop,Writable,我创建了一个类VectorWritable,它实现了接口Writable。我正试图将一个矢量可写对象写入输出文件,但得到以下结果:VectorWritable@1355b88b. 以下是我的写作方法: public void write(DataOutput out) throws IOException { getVectorString().write(out); } 函数getVectorString()提供一个文本对象 我没有50个代表可以评论,所以我会把它写下来作为一个答案
public void write(DataOutput out) throws IOException {
getVectorString().write(out);
}
函数getVectorString()提供一个文本对象 我没有50个代表可以评论,所以我会把它写下来作为一个答案 如何在getVectorString()中创建此文本对象?您不是在VectorWritable对象上调用默认的toString()方法吗,该对象返回的字符串如下“VectorWritable@1355b88b“除非重写它以返回描述对象的更有用字符串 编辑: 根据您的评论
Text vectorString
是VectorWritable
类的成员,您在set
方法中设置了这个Text
对象,所以我猜set
方法也在VectorWritable
中,它不是静态方法,那么,为什么要向它传递一个VectorWritable
对象呢?看起来您可以在一个VectorWritable
对象上调用此set
方法,将另一个传递给它,并使vectorString
与周围的VectorWritable
对象不匹配
如何将VectorWritable
写入输出?您是否调用您在问题中发布的write
方法?因为这个输出VectorWritable@1355b88b
看起来像是将VectorWritable
作为参数传递给一个方法,该方法调用其默认的toString()
方法,该方法将返回类似VectorWritable@1355b88b
可写接口用于序列化对象。因此,您可以将对象写入输出,并将其读回,但在您的实现中,很难解析您创建的字符串并读回对象
在VectorWriteable类中,我有两个字段:private List vector=new ArrayList();私有文本向量字符串;在方法写入之前,我调用的方法集是:public void set(VectorWritable vectorW){String temp=“”;for(int i=0;iYes)方法集位于VectorWritable类内。我从我的reducer类调用方法集以设置结果。在调用方法写入之后(来自我的reducer类)以编写VectorWritable对象。我已经尝试了上述方法,但得到了相同的输出。
public void write(DataOutput out) throws IOException {
out.writeInt(counter);
out.writeLong(timestamp);
}
public void readFields(DataInput in) throws IOException {
counter = in.readInt();
timestamp = in.readLong();
}