实际上,我正在尝试实现一个机器学习算法,它要求我将reducer的输出写入文件,然后在下一个mapper中读取这个文件。问题是,我正在文件中编写在reducer中创建的可Map可写对象,但现在当我想访问该对象时,它只以字符串的形式出现。有没有办法转换这个物体 org.apache.hadoop.io.MapWritable@72d01691
在从文件读取时转换为实际的可Map对象??
mapper中的部分代码:
DoubleWritable[][] Tdata = new DoubleWritable[T.numRows()][T.numColumns()];
for (int k = 0; k < Tdata.length; k++) {
for (int j = 0; j < Tdata[k].length; j++) {
Tdata[k][j] = new DoubleWritable(T.get(k, j));
}
}
DoubleArrayWritable t = new DoubleArrayWritable();
t.set(Tdata);
DoubleWritable[][] Hdata = new DoubleWritable[H.numRows()][H.numColumns()];
for (int k = 0; k < Hdata.length; k++) {
for (int j = 0; j < Hdata[k].length; j++) {
Hdata[k][j] = new DoubleWritable(H.get(k, j));
}
}
DoubleArrayWritable h = new DoubleArrayWritable();
h.set(Hdata);
mw.put(new IntWritable(0), h);
mw.put(new IntWritable(1), t);
context.write(new Text(splitId), mw);
在javascript中,我们使用eval来处理这些事情有没有这样的快捷方式?
1条答案
按热度按时间vfwfrxfs1#
您可能正在使用
TextOutputFormat
,这是默认值,或者您可能已经设置了它。为了正确地获取实际对象,应该使用
SequenceFileOutputFormat
并使用SequenceFileInputFormat
在下一份工作中。您可以使用以下方法设置输入/输出格式:
在接收Map器中,需要将传入对象设置为与上一个reducer输出的类型相匹配。