Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.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
Java 在映射器内部的对象中转换字符串化的可写映射_Java_Hadoop_Machine Learning_Mapreduce - Fatal编程技术网

Java 在映射器内部的对象中转换字符串化的可写映射

Java 在映射器内部的对象中转换字符串化的可写映射,java,hadoop,machine-learning,mapreduce,Java,Hadoop,Machine Learning,Mapreduce,实际上,我正在尝试实现一个机器学习算法,它要求我将reducer的输出写入文件,然后在下一个mapper中读取该文件。问题是,我正在文件中编写在reducer中创建的可映射可写对象,但现在当我想访问该对象时,它只作为字符串出现。有没有办法转换这个对象org.apache.hadoop.io。MapWritable@72d01691从文件读取时转换为实际的可映射可写对象 mapper中的部分代码: DoubleWritable[][] Tdata = new DoubleWritable[T.nu

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

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);
DoubleWritable[]Tdata=新的DoubleWritable[T.numRows()][T.numColumns()];
for(int k=0;k

在javascript中,我们使用eval来处理这些事情,有没有这样的快捷方式?

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

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

您可以使用以下方法设置输入/输出格式:

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

在接收映射器中,您需要将传入对象设置为与上一个reducer输出的类型相匹配。

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

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

您可以使用以下方法设置输入/输出格式:

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

在接收映射程序中,您需要将传入对象设置为与前一个reducer输出的类型相匹配。

实际上,我一开始就在尝试此操作,但由于使用旧API,所以出现了错误。但现在一切都解决了。感谢BTW实际上我一开始就在尝试这个,但是因为使用了旧的API,所以出现了错误。但现在一切都解决了。谢谢,顺便说一句