查看java系统参数时出现Spring hadoop作业运行器问题
我必须从SpringDataHadopp运行以下命令查看java系统参数时出现Spring hadoop作业运行器问题,spring,hadoop,spring-data,Spring,Hadoop,Spring Data,我必须从SpringDataHadopp运行以下命令 bin/hadoop jar /home/ubuntu/recommendation.jar org.apache.mahout.cf.taste.hadoop.item.RecommenderJob -Dmapred.input.dir=input/testDataFileModel.csv -Dmapred.output.dir=outputItem --usersFile input/users.txt --booleanData
bin/hadoop jar /home/ubuntu/recommendation.jar
org.apache.mahout.cf.taste.hadoop.item.RecommenderJob
-Dmapred.input.dir=input/testDataFileModel.csv -Dmapred.output.dir=outputItem --usersFile
input/users.txt --booleanData true --similarityClassname
org.apache.mahout.math.hadoop.similarity.cooccurrence.measures.LoglikelihoodSimilarity
所以我用
<jar-runner jar="recommender-engine-mapred-1.0.jar" main-class="org.apache.mahout.cf.taste.hadoop.item.RecommenderJob" run-at-startup="true" pre-action="setupScript" configuration-ref="hadoopConfiguration">
<arg value="-s org.apache.mahout.math.hadoop.similarity.cooccurrence.measures.LoglikelihoodSimilarity"/>
<arg value="-b true"/>
mapred.input.dir=${wordcount.input.path}testDataFileModel.csv
mapred.output.dir=${wordcount.output.path}
</jar-runner>
但我收到以下错误消息:-
2014-02-11 15:53:07585错误http-bio-8080-exec-5 org.apache.mahout.common.AbstractJob.parseArguments:363-未指定输入或必须提供-Dmapred.input.dir来指定输入目录
如何在spring hadoop job runner中传递系统参数。指定文件名而不是目录名是否确定 这对我来说毫无意义:
-Dmapred.input.dir=input/testDataFileModel.csv
mapred.input.dir=${wordcount.input.path}testDataFileModel.csv
尝试将-Dmapred.input.dir设置为文件所在的实际目录
Hadoop足够聪明,可以不递归地遍历目录中的所有文件,您必须对其进行配置 我已经创建了使用ToolRunner调用此作业的主函数
public class ItemSimilarityJobRunner {
public static void main(final String[] args) throws Exception {
ToolRunner.run(new RecommenderJob(), args);
}
}
现在,我在SpringDataHadoop中创建了一个jar并使用以下标记运行这个jar
<jar-runner jar="recommender-engine-mapred-1.0.jar" main-class="tarun.tool.ItemSimilarityJobRunner"
run-at-startup="true" pre-action="setupScript" post-action="exportJobResulDataScript">
<arg value="-btrue"/>
<arg value="-sorg.apache.mahout.math.hadoop.similarity.cooccurrence.measures.LoglikelihoodSimilarity"/>
mapred.input.dir=${hdfs.path.prefix}/input
mapred.output.dir=${hdfs.path.prefix}/output
</jar-runner>
请尝试以下方法:
<jar-runner jar="recommender-engine-mapred-1.0.jar" main-class="org.apache.mahout.cf.taste.hadoop.item.RecommenderJob" run-at-startup="true" pre-action="setupScript" configuration-ref="hadoopConfiguration">
<arg value="-btrue"/>
<arg value="-sorg.apache.mahout.math.hadoop.similarity.cooccurrence.measures.LoglikelihoodSimilarity"/>
<arg value="-i${wordcount.input.path}"/>
<arg value="-o${wordcount.input.path}"/>
</jar-runner>
这就是传递参数的方式。注意不要在'-b,-s,-i,-o'字符后加空格,因为我发现有空格和没有空格都有区别,它只在没有空格的情况下对我起作用。如果我像我提到的那样从shell i运行此命令,您所说的工作正常。但是我必须使用SpringDataHadoop来运行这个命令。${wordcount.input.path}是在spring上下文文件中设置的变量。