簡體   English   中英

錯誤:java.lang.RuntimeException:java.lang.ClassNotFoundException:類WordCountExample $ Map未找到

[英]Error: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class WordCountExample$Map not found

我正在使用ubuntu系統並嘗試運行wordcount.jar程序。 不幸的是,我遇到以下錯誤-

錯誤:java.lang.RuntimeException:java.lang.ClassNotFoundException:類WordCountExample $ Map未找到

我已經更新了類路徑-

job.setJarByClass(WordCountExample.class); 和jobconf.setJarByClass(WordCountExample.class);

沒有這項工作。 不知道怎么了。 請在這方面與您的外籍人士分享。

import java.io.IOException;
import java.util.*;

import org.apache.hadoop.fs.Path;
import org.apache.hadoop.conf.*;
import org.apache.hadoop.io.*;
import org.apache.hadoop.mapreduce.*;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;

/ ** * @author http://www.devinline.com * /

public class WordCountExample {
/* Map class which job will use and execute it map method */
public static class Map extends
Mapper<LongWritable, Text, Text, IntWritable> {
private final static IntWritable one = new IntWritable(1);
private Text word = new Text();

public void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException {
String line = value.toString();
StringTokenizer tokenizer = new StringTokenizer(line);
while (tokenizer.hasMoreTokens()) {
word.set(tokenizer.nextToken());
context.write(word, one);
}}}

/* Reduce class which job will use and execute it reduce method */
public static class Reduce extends
Reducer<Text, IntWritable, Text, IntWritable> {

public 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));
}}

public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();

/* Created a job with name wordCountExample */
Job job = Job.getInstance(conf, "wordCountExample");
job.setJarByClass(WordCountExample.class);  

/*
* Handler string and int in hadoop way: for string hadoop uses Text
* class and for int uses IntWritable */
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);

/*
 * Configure map and reducer class, based on which it uses map and
    /* reduce method
     */
job.setMapperClass(Map.class);
job.setReducerClass(Reduce.class);

    /* Input and output format set as TextInputFormat */
job.setInputFormatClass(TextInputFormat.class);
job.setOutputFormatClass(TextOutputFormat.class);

    /* addInputPath - passes input file path to job */
FileInputFormat.addInputPath(job, new Path(args[0]));
    /* setOutputPath - passes output path to job */
FileOutputFormat.setOutputPath(job, new Path(args[1]));

    /* Submit the job to the cluster and wait for it to finish. */
System.exit(job.waitForCompletion(true) ? 1 : 0);
}}

hadoop jar /home/nahmed/WordcountSample.jar WordCountExample /user/nahmed/pg20417.txt / user / nahmed / WCoutput 15/08/15 21:31:12 INFO client.RMProxy:在it066431.massey.ac上連接到ResourceManager。 nz / 130.123.248.83:8050

19/08/15 21:31:12 INFO client.AHSProxy:連接到位於it066431.massey.ac.nz/130.123.248.83:10200的Application History服務器。15/08/15 21:31:12 WARN mapreduce.JobResourceUploader:Hadoop命令行選項解析未執行。 實施Tool接口並使用ToolRunner執行您的應用程序以對此進行糾正。 2015年8月19日21:31:12警告mapreduce.JobResourceUploader:未設置作業jar文件。 可能找不到用戶類別。 請參見Job或Job#setJar(String)。 19/08/15 21:31:12 INFO輸入.FileInputFormat:要處理的總輸入路徑:1 19/08/15 21:31:12 INFO mapreduce.JobSubmitter:分割數:1 19/08/15 21:31 :12 INFO mapreduce.JobSubmitter:提交作業令牌:job_1562128011754_0026 19/08/15 21:31:13 INFO mapred.YARNRunner:作業jar不存在。 不將任何jar添加到資源列表中。 19/08/15 21:31:13 INFO impl.YarnClientImpl:提交的應用程序application_1562128011754_0026 19/08/15 21:31:13 INFO mapreduce.Job:跟蹤作業的網址: http ://it066431.massey.ac 。 nz:8088 / proxy / application_1562128011754_0026 / 19/08/15 21:31:13 INFO mapreduce.Job:正在運行的作業:job_1562128011754_0026 19/08/15 21:31:17 INFO mapreduce.Job:Job job_1562128011754_0026以超級模式運行:false 19/08/15 21:31:17 INFO mapreduce.Job:映射0%減少0%19/08/15 21:31:20 INFO mapreduce.Job:任務ID:try_1562128011754_0026_m_000000_0,狀態:FAILED錯誤:java.lang。 RuntimeException:java.lang.ClassNotFoundException:類WordCountExample $ Map在org.apache.hadoop.mapreduce.task.JobContextImpl.getMapperClass(JobContextImpl.org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2228)上找不到。 java:186)位於org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:745)位於org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)位於org.apache.hadoop.mapred .YarnChild $ 2.run(Y org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation)上的javax.security.auth.Subject.doAs(Subject.java:422)處的java.security.AccessController.doPrivileged(本機方法)的arnChild.java:170) java:1866)在org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:164)原因:java.lang.ClassNotFoundException:類WordCountExample $ Map在org.apache.hadoop.conf.Configuration.getClassByName上找不到(Configuration.java:2134)位於org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2226)...還有8個

容器被ApplicationMaster殺死。 集裝箱應要求被殺死。 退出代碼為143容器退出,退出代碼為非零143

19/08/15 21:31:23 INFO mapreduce.Job:任務ID:try_1562128011754_0026_m_000000_1,狀態:FAILED錯誤:java.lang.RuntimeException:java.lang.ClassNotFoundException:類WordCountExample $ Map在org.apache.hadoop上找不到。 org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java :)上的conf.Configuration.getClass(Configuration.java:2228)在org.apache.hadoop.mapreduce.task.JobContextImpl.getMapperClass(JobContextImpl.java:186) 745)at org.apache.hadoop.mapred.YarnChild $ 2.run(YarnChild.java:170)at org.apache.hadoop.mapred.YarnChild $ 2.run(YarnChild.java:170)at java.security.AccessController.doPrivileged( org.apache.hadoop.mapred.YarnChild上javax.security.auth.Subject.doAs(Subject.java:422)上的本機方法).org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1866) main(YarnChild.java:164)原因:java.lang.ClassNotFoundException:類WordCountExample $ Map在org.a的org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:2134)上找不到 pache.hadoop.conf.Configuration.getClass(Configuration.java:2226)...還有8個

容器被ApplicationMaster殺死。 集裝箱應要求被殺死。 退出代碼為143容器退出,退出代碼為非零143

15年8月19日21:31:26信息mapreduce。工作:任務ID:try_1562128011754_0026_m_000000_2,狀態:失敗錯誤:java.lang.RuntimeException:java.lang.ClassNotFoundException:類WordCountExample $ Map在org.apache.hadoop上找不到。 org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java :)上的conf.Configuration.getClass(Configuration.java:2228)在org.apache.hadoop.mapreduce.task.JobContextImpl.getMapperClass(JobContextImpl.java:186) 745)at org.apache.hadoop.mapred.YarnChild $ 2.run(YarnChild.java:170)at org.apache.hadoop.mapred.YarnChild $ 2.run(YarnChild.java:170)at java.security.AccessController.doPrivileged( org.apache.hadoop.mapred.YarnChild上javax.security.auth.Subject.doAs(Subject.java:422)上的本機方法).org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1866) main(YarnChild.java:164)原因:java.lang.ClassNotFoundException:類WordCountExample $ Map在org.a的org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:2134)上找不到 pache.hadoop.conf.Configuration.getClass(Configuration.java:2226)...還有8個

容器被ApplicationMaster殺死。 集裝箱應要求被殺死。 退出代碼為143容器退出,退出代碼為非零143

19/08/15 21:31:31 INFO mapreduce.Job:映射100%減少100%19/08/15 21:31:31 INFO mapreduce.Job:作業job_1562128011754_0026因狀態失敗而失敗,原因是:任務失敗task_1562128011754_0026_m_000000作業失敗由於任務失敗。 failedMaps:1次失敗減少:0次

15年8月19日21:31:31信息mapreduce.Job:計數器:13作業計數器失敗的地圖任務= 4殺死的reduce任務= 1已啟動的地圖任務= 4其他本地地圖任務= 3數據本地地圖任務= 1總時間所有地圖在占用插槽中所花費的時間(ms)= 53207所有縮小在占用插槽中所花費的總時間(ms)= 0所有地圖任務所花費的總時間(ms)= 7601所有縮減任務所花費的總時間(ms)= 0所有映射任務占用的總vcore毫秒= 7601所有縮減任務占用的總vcore毫秒= 0所有映射任務占用的總兆字節毫秒= 54483968所有reduce任務占用的總兆字節毫秒= 0

您有兩個嵌套的類:Map和Reduce。 該錯誤表明Java無法找到找到它們。 最有可能的jar /home/nahmed/WordcountSample.jar不包含它們。 驗證執行:

 jar -tf  /home/nahmed/WordcountSample.jar

如果它們不包含在jar中,我認為這是您編譯方式的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM