假設我在Reducer代碼中檢測到輸入鍵/值中的某些內容,應該實際運行哪些代碼以便reducer不再繼續,輸出中的任何已發出記錄都將寫入輸出文件和作業停止不再進一步減少發生?在Reducer代碼中以編程方式停止作業
-1
A
回答
1
停止工作可能不是一個好主意。 但是,如果你需要它,一種方法是創建你自己的異常類,或許延伸InterruptedException
或IOException
,並且當你想要退出時,只要出現這種情況就拋出異常。
你的異常類可能如下:
@Override
protected void reduce(Text key, Iterable values, Context context) throws IOException,InterruptedException {
...
if(<condition to quit happen>){
throw new QuitReducerException("Quitting reducer due to some specified reason");// You may add details of the reason you are quitting and this will be available in the job logs (in stderr)
}
...
}
PS:這不能保證
Class QuitReducerException extends InterruptedException {
//Parameterless Constructor
public QuitReducerException() {}
//Constructor that accepts a message
public QuitReducerException(String message)
{
super(message);
}
}
而在你的減少方法,你可以按如下使用由電流減速器發出的輸出將被承諾輸出文件。另外任何其他還未完成的reducer都不會提交這些文件。雖然已經完成的減員已經完成了他們的產出。
1
這可能是多個reducers必須在您的hadoop集羣上運行的情況。因此,即使您在輸入中檢測到錯誤並嘗試停止輸入,也不能確定狀態是否一致(即,一旦收到錯誤輸入,就不會處理記錄),因爲多個記錄可能會並行處理多個記錄。
所以我不認爲這是停止工作的好主意。
相關問題
- 1. 以編程方式停止PlayFramework作業
- 2. 以編程方式終止Spark作業
- 3. 如何以編程方式停止Spark作業執行
- 4. 以編程方式從c#開始/停止tomcat webapps代碼
- 5. 如何以編程方式停止java.util.logging?
- 6. 以編程方式停止導航
- 7. 以編程方式停止請求
- 8. 如何以編程方式停止ServletRequestListener?
- 9. 以編程方式停止GIF動畫
- 10. 碼頭:以編程方式停止導致「1線程無法停止」
- 11. 以編程方式重建jenkins作業
- 12. 以編程方式創建SQL作業
- 13. 以編程方式暫停/停止MediaPlayer Android在給定時間
- 14. 如何以編程方式停止在Firefox中加載頁面?
- 15. 如何在iphone中以編程方式停止快照?
- 16. 以編程方式停止在UIWebView的iframe中播放視頻
- 17. MAIN.EXE停止工作在編譯圖形代碼在代碼塊
- 18. 在代碼中停止編譯
- 19. 以編程方式在Azure中創建網絡作業
- 20. 以編程方式檢查.NET代碼
- 21. 以編程方式更改VB.NET代碼
- 22. 以編程方式生成QR代碼
- 23. Magento - 以編程方式通過代碼
- 24. 使用wget以編程方式停止/暫停下載
- 25. 無法停止停止的作業 - 子流程中沒有作業控制?
- 26. 如何以編程方式停止Dynamics 2011中的工作流程?
- 27. 在Quartz.NET中以編程方式編輯作業CronExpression - 有哪些方法?
- 28. 以編程方式刪除自定義代碼工作流程
- 29. 以編程方式停止並啓動Eclipse中的JBoss
- 30. 以編程方式停止Web服務中的Windows服務
+1,我同意這不是一個好主意,但在某些情況下可能需要。 – Amar 2013-04-04 19:16:54