如何将通用参数传递给hadoop jar

时间:2014-12-16 17:29:00

标签: java hadoop

我将参数传递给hadoop jar,如下所示:

hadoop  jar C:\Pointerfile.jar main.com.asos.recommendations.Pointerfile -D Signal=Signaltest -D ProductData=ProductData -D CustomerSegment=CustomerSegment -D CustomerCategory=CustomerCategory -D P2PSimilarity=P2PSimilarity -D ProductCategory=ProductCategory/test -D ProductSegment=ProductSegment/test  -D Customer=Customer -D ProductDataCN=ProductDatab -D CustomerSegmentCN=CustomerSegmentb -D CustomerCategoryCN=CustomerCategoryb -D P2PSimilarityCN=P2PSimilarityb -D ProductCategoryCN=ProductCategoryb -D ProductSegmentCN=ProductSegmentb -D SignalCN=Signalb -D CustomerCN=Customerb -D SAN=SAN -D version=v0.1

在java代码中,我试图访问这些参数:

Configuration conf = new Configuration();        
System.out.println("parameters are" + conf.get("Signal"));

但它返回null。

我也试过删除空格:
 -DSignal =信号和" -DSignal =信号"

1 个答案:

答案 0 :(得分:0)

使用这种类:

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;

public class MyClass extends Configured implements Tool {

    @Override
    public int run(String[] args) throws Exception {
        Configuration conf = getConf();
        System.out.println("parameters are" + conf.get("Signal"));

        // Some code ...

        return 0;
    }

    public static void main(String[] args) throws Exception {
        int exitCode = ToolRunner.run(new MyClass(), args);
        System.exit(exitCode);
    }
}

在这个类中,getConf()将填充参数。 对于通话,请勿使用空格或引号:

hadoop  jar C:\Pointerfile.jar main.com.asos.recommendations.Pointerfile -DSignal=Signaltest -DProductData=ProductData -DCustomerSegment=CustomerSegment -DCustomerCategory=CustomerCategory -DP2PSimilarity=P2PSimilarity -DProductCategory=ProductCategory/test -DProductSegment=ProductSegment/test  -DCustomer=Customer -DProductDataCN=ProductDatab -DCustomerSegmentCN=CustomerSegmentb -DCustomerCategoryCN=CustomerCategoryb -DP2PSimilarityCN=P2PSimilarityb -DProductCategoryCN=ProductCategoryb -DProductSegmentCN=ProductSegmentb -DSignalCN=Signalb -DCustomerCN=Customerb -DSAN=SAN -Dversion=v0.1