2017-02-06 4 views
0

私のhadoopプログラムに問題があります。私はマッパーにファイルを読み込もうとしていますが、ファイルが存在しないことを伝えるエラーが出ます。hadoop "入力パスが存在しません"ローカルドライブに見える

コードは次のようである:

Configuration conf = new Configuration(); 
    //String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs(); 
    conf.set("mapreduce.job.queuename", "alpha"); 
    conf.setLong("mapreduce.task.timeout", 1000 * 60 * 60); 
    conf.setDouble("mapreduce.job.reduce.slowstart.completedmaps", 0.75); 
    conf.set("mapred.textoutputformat.separator", "\t"); 
    job.setMapperClass(MapperCollector.class); 
    // job.setCombinerClass(IntSumReducer.class); 
    job.setReducerClass(MetaDataReducer.class); 
    job.setMapOutputKeyClass(Text.class); 
    job.setMapOutputValueClass(Text.class); 
    job.setOutputKeyClass(Text.class); 
    job.setOutputValueClass(Text.class); 
    FileInputFormat.addInputPath(job, new Path("/user/myuser/theData.csv")); 

    FileSystem hdfs = FileSystem.get(new Configuration()); 
    Path outFolder = new Path("/user/myuser/outFolder/"); 
    if (hdfs.exists(outFolder)) { 
     hdfs.delete(outFolder, true); //Delete existing Directory 
    } 
    FileOutputFormat.setOutputPath(job, outFolder); 

    System.exit(job.waitForCompletion(true) ? 0 : 1); 

、それはエラーで失敗します。

Exception in thread "main" org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist: file:/user/myuser/theData.csv 
    at org.apache.hadoop.mapreduce.lib.input.FileInputFormat.singleThreadedListStatus(FileInputFormat.java:323) 
    at org.apache.hadoop.mapreduce.lib.input.FileInputFormat.listStatus(FileInputFormat.java:265) 
    at org.apache.hadoop.mapreduce.lib.input.FileInputFormat.getSplits(FileInputFormat.java:387) 
    at org.apache.hadoop.mapreduce.JobSubmitter.writeNewSplits(JobSubmitter.java:301) 
    at org.apache.hadoop.mapreduce.JobSubmitter.writeSplits(JobSubmitter.java:318) 
    at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:196) 
    at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1290) 
    at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1287) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at javax.security.auth.Subject.doAs(Subject.java:422) 
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1657) 
    at org.apache.hadoop.mapreduce.Job.submit(Job.java:1287) 
    at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1308) 
    at myuser.mypackage.GenerateTrainingData.main(GenerateTrainingData.java:82) 

コードが前に働いていたが、クラスタを再起動した後、それは動作しません。さらに、私は "hadoop df -cat /user/myuser/theData.csv"を実行することができ、それは完全に動作します。

私は今、ローカルディスクを探しているようですが、ファイルはhdfsにあります。私はなぜそれが起こっているのか分かりません。

答えて

0

誰かが私がいたとして、私は走っていた馬鹿である場合:

java -jar mycode.jar 

代わり

hadoop jar mycode.jar 

のそれをやった後に、正しく、すべてが完璧に動作しますが。

関連する問題