1 回答

TA貢獻1813條經驗 獲得超2個贊
Hadoop中Mapper類的setup函數在什么地方調用
答:經過跟蹤hadoop源碼發現,Mapper類的setup()函數在Mapper類的run()函數中被調用。
向hadoop提交job后,hadoop會在MapTask的runNewMapper()或者runOldMapper()函數中使用反饋機制實例化具體的Mapper子類,然后調用這個對象的run()函數,其中setup()函數就在這個函數的開始被調用,因為hadoop會向setup()函數中傳遞Configuration等一些變量,所以我們可以通過重載setup()函數來獲得系統變量實現自己的功能。
[java] view plaincopy
/**
* Expert users can override this method for more complete control over the
* execution of the Mapper.
* @param context
* @throws IOException
*/
public void run(Context context) throws IOException, InterruptedException {
setup(context);//只運行一次,可以重載實現自己的功能,比如獲得Configuration中的參數
while (context.nextKeyValue()) {
map(context.getCurrentKey(), context.getCurrentValue(), context);
}
cleanup(context);
- 1 回答
- 0 關注
- 1017 瀏覽
添加回答
舉報