如何将映射器的内容写入文件。这样好吗。
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();
如果我的输入文件被拆分,上面的代码是否正常工作?
在化简器中,我正在组合所有映射器数据。
编辑
Path inputfile = new Path("in/map");
FSDataOutputStream out = fs.create(inputfile);
if(value.toString()!= null){
out.writeBytes(value.toString());
}
out.close();
映射
器任务在Hadoop集群中的多个节点上并发运行。使用普通 Java Writer 类编写的方法将不起作用,因为您需要使用 HDFS API 来写入数据。
相反,在map方法中使用context.write()
将数据写入HDFS文件。