Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
hadoop中接口可写时出错_Hadoop_Writable - Fatal编程技术网

hadoop中接口可写时出错

hadoop中接口可写时出错,hadoop,writable,Hadoop,Writable,我创建了一个类VectorWritable,它实现了接口Writable。我正试图将一个矢量可写对象写入输出文件,但得到以下结果:VectorWritable@1355b88b. 以下是我的写作方法: public void write(DataOutput out) throws IOException { getVectorString().write(out); } 函数getVectorString()提供一个文本对象 我没有50个代表可以评论,所以我会把它写下来作为一个答案

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

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