如何将映射器中的内容写入文件 - Hadoop

时间:2013-11-13 05:55:23

标签: java hadoop mapreduce

如何将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();

1 个答案:

答案 0 :(得分:1)

Mapper任务在Hadoop集群中的多个节点上并发运行。使用普通Java Writer类编写的方法不会起作用,因为您需要使用HDFS API来编写数据。

而是在map方法中使用context.write()将数据写入HDFS文件。