我已成功将输入文件“input.txt”和“users.txt”添加到 HDFS。我已经成功地分别测试了 Hadoop 和 Mahout 作业。但是,当我使用以下命令行运行 RecommenderJob 时:
bin/hadoop jar /Applications/mahout-distribution-0.9/mahout-core-0.9-job.jar org.apache.mahout.cf.taste.hadoop.item.RecommenderJob -Dmapred.input.dir=/user/valtera45/input /input.txt -Dmapred.output.dir=/user/valtera45/output --usersFile /user/valtera45/input2/users.txt --similarityClassname SIMILARITY_COOCCURRENCE
这是我得到的输出:
线程“主”java.io.IOException 中的异常:无法在 org.apache.hadoop.hdfs.DFSClient$DFSInputStream.openInfo(DFSClient.java:1444) 处打开文件名 /user/valtera45/temp/preparePreferenceMatrix/numUsers.bin 在 org .apache.hadoop.hdfs.DFSClient$DFSInputStream.(DFSClient.java:1435) 在 org.apache.hadoop.hdfs.DFSClient.open(DFSClient.java:347) 在 org.apache.hadoop.hdfs.DistributedFileSystem.open( DistributedFileSystem.java:178) 在 org.apache.hadoop.fs.FileSystem.open(FileSystem.java:351) 在 org.apache.mahout.common.HadoopUtil.readInt(HadoopUtil.java:339) 在 org.apache.mahout .cf.taste.hadoop.item.RecommenderJob.run(RecommenderJob.java:172) 在 org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65) 在 org.apache.mahout.cf.taste.hadoop .item.RecommenderJob.main(RecommenderJob.java:322) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect .Method.invoke(Method.java:606) 在 org.apache.hadoop.util.RunJar.main(RunJar.java:156)
每当我运行独立的 Mahout 作业时,都会在 Mahout 目录中创建一个临时文件夹。RecommenderJob 似乎无法通过这一步。有任何想法吗?提前致谢。我知道我使用的输入文件格式正确,因为它们已经成功地为其他人工作。