1. 程式人生 > >在hadoop上跑mapreduce程式時出現NoSuchMethodException錯誤

在hadoop上跑mapreduce程式時出現NoSuchMethodException錯誤

錯誤詳情
原因:Map類和Reduce類前面沒用static修飾
hadoop呼叫map和reduce用的是反射機制,如果內部類不是靜態的,則無法獲得內部類的例項。
擴充套件: java裡面static一般用來修飾成員變數或函式。但有一種特殊用法是用static修飾內部類,普通類是不允許宣告為靜態的,只有內部類才可以。被static修飾的內部類可以直接作為一個普通類來使用,而不需例項一個外部類。

解決辦法:在map和reduce類前面加static修飾
在這裡插入圖片描述
在這裡插入圖片描述

注意事項:這裡的前提是map類和reduce類是內部類時。形如:
class All{
static class Map {} //內部類
static class Reduce{} //內部類
}