2016-02-29 51 views
0

我想讀取初始化方法中的配置單元conf變量,但不工作,任何建議PLZ?如何讀取UDF中的配置單元變量初始化方法

我的UDF類:

public class MyUDF extends GenericUDTF { 
    MapredContext _mapredContext; 

    @Override 
    public void configure(MapredContext mapredContext) { 
     _mapredContext = mapredContext; 
     super.configure(mapredContext); 
    } 

    @Override 
    public StructObjectInspector initialize(ObjectInspector[] args) throws UDFArgumentException { 
     Configuration conf = _mapredContext.getJobConf(); 
    // i am getting conf as null 
    } 
} 

回答

0

我也遇到這個問題,有一個自定義UDTF。在MapredContext.get()方法返回一個非空結果(見UDTFOperator line 82 for example)之前,用戶定義的函數似乎沒有調用configure()方法。 MapredContext.get()可能會返回空結果,因爲配置單元作業尚未啓動映射器/縮減器(you can see that MapredContext.get() will return null up until the MapredContext.init() method has been called; init()方法將boolean isMap作爲參數,因此直到MR/Tez才調用此方法運行時 - the comment associated with the GenericUDTF.configure() method confirms this)。

TLDR UDF/UDTF initialize()方法將在作業設置期間被調用,並且configure()將在MR運行時被調用,因此在您的示例代碼中爲空結果。