我将参数传递给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 =信号"
答案 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