首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Mapper内部对象中转换结构化MapWritable

在Mapper内部对象中转换结构化MapWritable
EN

Stack Overflow用户
提问于 2016-11-17 06:39:06
回答 1查看 159关注 0票数 1

实际上,我正在尝试实现一个机器学习算法,它要求我在文件中写入减速器的输出,然后在下一个映射器中读取这个文件。问题是,我正在编写在减缩器中创建的MapWritable对象,但现在当我想要访问该对象时,它只以字符串的形式出现。在读取文件时,是否有任何方法将此对象org.apache.hadoop.io.MapWritable@72d01691转换为实际的MapWritable对象?

在mapper中我的代码的一部分:

代码语言:javascript
运行
复制
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,有这样的快捷方式吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-17 08:12:49

您可能使用TextOutputFormat编写数据,这是默认的,或者您可能已经设置了它。

要正确地获得实际对象,您应该使用SequenceFileOutputFormat编写输出,并在下一个作业中使用SequenceFileInputFormat读取输出。

您可以使用以下内容设置输入/输出格式:

代码语言:javascript
运行
复制
job.setInputFormat(SequenceFileInputFormat.class);
job.setOutputFormat(SequenceFileOutputFormat.class);

在接收映射器中,您需要设置传入对象以匹配上一个减法器输出的类型。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40648241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档