gpt4 book ai didi

java - 在映射器内部的对象中转换字符串化的 MapWritable

转载 作者:可可西里 更新时间:2023-11-01 15:58:33 24 4
gpt4 key购买 nike

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

我在映射器中的部分代码:

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 来处理这些事情,有没有这样的快捷方式?

最佳答案

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

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

您可以使用类似的方式设置输入/输出格式:

job.setInputFormat(SequenceFileInputFormat.class);
job.setOutputFormat(SequenceFileOutputFormat.class);

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

关于java - 在映射器内部的对象中转换字符串化的 MapWritable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40648241/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com