hadoop中接口可写时出错

kuarbcqp  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(362)

我已经创建了一个类vectorwritable,它实现了接口writable。我正试图将一个矢量可写对象写入输出文件,但得到以下结果:vectorwritable@1355b88b. 以下是我的写作方法:

public void write(DataOutput out) throws IOException {  
   getVectorString().write(out);
}

函数getvectorstring()提供一个文本对象。

wfauudbj

wfauudbj1#

我没有意见,所以我会写它作为一个答案。
如何在getvectorstring()中创建这个文本对象?你不是在vectorwritable对象上调用default tostring()方法吗,它返回字符串vectorwritable@1355b88b“除非重写它以返回描述对象的更有用的字符串?
编辑:
根据你的评论 Text vectorString 是…的成员 VectorWritable 同学们,这是你们设定的 Text 中的对象 set 所以我猜 set 方法也在里面 VectorWritable ,并且它不是静态方法,所以为什么要传递 VectorWritable 反对吗?看起来你可以调用这个 set 一对一方法 VectorWritable 对象,传递另一个给它 vectorString 与周围环境不匹配 VectorWritable 对象。
你怎么写 VectorWritable 到输出?你会调用 write 你在问题里贴的方法是什么?因为这个输出 VectorWritable@1355b88b 看来你通过了 VectorWritable 作为调用其默认值的方法的参数 toString() 返回字符串的方法 VectorWritable@1355b88b .
可写接口用于序列化对象。因此,您可以将对象写入输出并读回,但是在您的实现中,很难解析您创建的字符串并读回对象。实施示例

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();
   }

相关问题