来自hdfs:// localhost:5050 / c:/filename.txt的路径名/c:/filename.txt不是有效的DFS文件名

时间:2014-03-03 17:55:25

标签: java hadoop

我在同一个hdfs文件系统中运行一个简单的wordcount程序并获得良好的输出。但我需要将输出文件放在我的本地系统中,如:c:/filename.txt。但是在尝试这样的时候

conf.setInputFormat(TextInputFormat.class);

        conf.setOutputFormat(TextOutputFormat.class);

        FileInputFormat.setInputPaths(conf, new Path("Input"));

        FileOutputFormat.setOutputPath(conf, new Path("c:/filename.txt"));

我收到以下错误:

14/03/03 23:04:32 WARN mapred.JobClient: Use GenericOptionsParser for parsing the arguments. Applications should implement Tool for the same.
java.lang.IllegalArgumentException: Pathname /c:/filename.txt from hdfs://localhost:5050/c:/filename.txt is not a valid DFS filename.
    at org.apache.hadoop.hdfs.DistributedFileSystem.getPathName(DistributedFileSystem.java:151)
    at org.apache.hadoop.hdfs.DistributedFileSystem.getFileStatus(DistributedFileSystem.java:411)
    at org.apache.hadoop.fs.FileSystem.exists(FileSystem.java:651)
    at org.apache.hadoop.mapred.FileOutputFormat.checkOutputSpecs(FileOutputFormat.java:110)
    at org.apache.hadoop.mapred.JobClient.submitJob(JobClient.java:793)
    at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:1142)
    at org.raj.MapReduceDriver.main(MapReduceDriver.java:52)

这是可能的,如果是帮助我的话。

1 个答案:

答案 0 :(得分:0)

您无法从MapReduce程序将输出文件放在本地Filesystem上。输出路径应设置为HDFS上的目录。

您可以使用命令hadoop -getmerge <outputDir> <path in Local FS>

将输出目录复制到本地FS