我在同一个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)
这是可能的,如果是帮助我的话。
答案 0 :(得分:0)
您无法从MapReduce程序将输出文件放在本地Filesystem上。输出路径应设置为HDFS上的目录。
您可以使用命令hadoop -getmerge <outputDir> <path in Local FS>