如何将mapper的内容写入文件。这很好吗。
public class MyMapper extends
Mapper<Object, Text, Text, MatrixWritable > {
public void map(Object key, Text value, Context context)
throws IOException, InterruptedException {
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(conf);
Path inputfile = new Path("in/map");
BufferedWriter getdatabuffer = new BufferedWriter(new OutputStreamWriter(fs.create(inputfile)));
if(value.toString()!= null){
getdatabuffer.write(value.toString());
}
getdatabuffer.close();
如果我的inputfile被拆分,上述代码是否正常工作?
在reducer中,我将所有映射器数据组合在一起。
修改
Path inputfile = new Path("in/map");
FSDataOutputStream out = fs.create(inputfile);
if(value.toString()!= null){
out.writeBytes(value.toString());
}
out.close();
答案 0 :(得分:1)
Mapper任务在Hadoop集群中的多个节点上并发运行。使用普通Java Writer类编写的方法不会起作用,因为您需要使用HDFS API来编写数据。
而是在map方法中使用context.write()
将数据写入HDFS文件。