查看java系统参数时出现Spring hadoop作业运行器问题

查看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

我必须从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 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上下文文件中设置的变量。