
在运行mapreduce示例wordcount报错
这样的情况怎么解决 尝试了很多的方法没有成功…
关注以下回复引自免费微信小程序:皆我百晓生。 如问题解决,还请采纳。如仍有疑问,请回复留言或私信博主,以便获得更精准的帮助。
解决方法:
代码示例:
IMPORT ORG.APACHE.HADOOP.CONF.CONFIGURATION;
IMPORT ORG.APACHE.HADOOP.FS.PATH;
IMPORT ORG.APACHE.HADOOP.IO.INTWRITABLE;
IMPORT ORG.APACHE.HADOOP.IO.TEXT;
IMPORT ORG.APACHE.HADOOP.MAPREDUCE.JOB;
IMPORT ORG.APACHE.HADOOP.MAPREDUCE.MAPPER;
IMPORT ORG.APACHE.HADOOP.MAPREDUCE.REDUCER;
IMPORT ORG.APACHE.HADOOP.MAPREDUCE.LIB.INPUT.FILEINPUTFORMAT;
IMPORT ORG.APACHE.HADOOP.MAPREDUCE.LIB.OUTPUT.FILEOUTPUTFORMAT;
PUBLIC CLASS WORDCOUNT {
PRIVATE STATIC FINAL STRING INPUT_FILE = "INPUT.TXT";
PRIVATE STATIC FINAL STRING OUTPUT_FILE = "OUTPUT.TXT";
PUBLIC STATIC VOID MAIN(STRING[] ARGS) THROWS EXCEPTION {
CONFIGURATION CONF = NEW CONFIGURATION();
JOB JOB = JOB.GETINSTANCE(CONF, "WORD COUNT");
JOB.SETJARBYCLASS(WORDCOUNT.CLASS);
JOB.SETMAPPERCLASS(MYMAPPER.CLASS);
JOB.SETCOMBINERCLASS(MYREDUCER.CLASS);
JOB.SETREDUCERCLASS(MYREDUCER.CLASS);
FILEINPUTFORMAT.ADDINPUTPATH(JOB, NEW PATH(INPUT_FILE));
FILEOUTPUTFORMAT.SETOUTPUTPATH(JOB, NEW PATH(OUTPUT_FILE));
SYSTEM.OUT.PRINTLN("STARTING MAP REDUCE JOB...");
JOB.WAITFORCOMPLETION(TRUE);
// 打印输出结果
SYSTEM.OUT.PRINTLN("OUTPUT FILE: " + OUTPUT_FILE);
}
STATIC CLASS MYMAPPER EXTENDS MAPPER<OBJECT, TEXT, TEXT, INTWRITABLE> {
PRIVATE FINAL STATIC INTWRITABLE ONE = NEW INTWRITABLE(1);
PRIVATE FINAL STATIC INTWRITABLE THREE = NEW INTWRITABLE(3);
@OVERRIDE
PROTECTED VOID MAP(OBJECT KEY, TEXT VALUE, CONTEXT CONTEXT)
THROWS IOEXCEPTION, INTERRUPTEDEXCEPTION {
STRING LINE = VALUE.TOSTRING();
STRING[] WORDS = LINE.SPLIT("\\W+");
FOR (STRING WORD : WORDS) {
CONTEXT.WRITE(NEW TEXT(WORD), ONE);
}
}
}
STATIC CLASS MYREDUCER EXTENDS REDUCER<TEXT, INTWRITABLE, TEXT, INTWRITABLE> {
PRIVATE FINAL STATIC INTWRITABLE TWO = NEW INTWRITABLE(2);
@OVERRIDE
PROTECTED VOID REDUCE(TEXT KEY, ITERABLE<INTWRITABLE> VALUES, CONTEXT CONTEXT)
THROWS IOEXCEPTION, INTERRUPTEDEXCEPTION {
INT SUM = 0;
FOR (INTWRITABLE VAL : VALUES) {
SUM += VAL.GET();
}
CONTEXT.WRITE(KEY, NEW INTWRITABLE(SUM));
}
}
}
在这个例子中,我们首先导入了必要的包,然后定义了一个JOB实例,其中包含一个MAPPER和一个REDUCER。然后,我们通过FILEINPUTFORMAT和FILEOUTPUTFORMAT类实现了输入和输出的操作。最后,我们打印出输出文件的路径,以便于查看结果。