1

我正在尝试直接从映射器在 hadoop 文件系统中编写纯文本文件。

我这样做如下:

public void createFile(Configuration conf) throws IOException{    
    FileSystem fs = FileSystem.get(conf);

    Path filenamePath = new Path(conf.get("mapred.output.dir")+"/_"+conf.get("mapred.task.id"), "tree.txt");    

        try {

      if (fs.exists(filenamePath)) {        
        // remove the file first
        fs.delete(filenamePath);            
      }

      FSDataOutputStream out = fs.create(filenamePath);       
      out.writeUTF("hello, world!");        
      out.close();

    } catch (IOException ioe) {
        System.err.println("IOException during operation: " + ioe.toString());
        System.exit(1);
    }
}

而且它不会在伪分布式模式下写任何东西。不过,在单机上写的很完美。

问题出在哪里?

4

1 回答 1

1

我使用的是 Amazon Elastic MapReduce (EMR),我必须通过 URI 获取 FileSystem才能使用 S3 中的文件。

FileSystem fs = FileSystem.get(uri, conf);

那可能对你没有帮助。

于 2013-03-13T18:58:07.323 回答