我使用java/eclipse/hadoop2.2.0(以及所有必要的jar)在ubuntu上运行一个示例map reduce任务(本地单节点),使用下面的代码,但遇到异常(下面是stacktrace)。
我可以从ubuntu控制台运行hadoop中的单词计数示例。
代码:
import java.io.IOException;
import java.util.StringTokenizer;
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.input.KeyValueTextInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
public class testhdfs
{
public static class WordMapper extends Mapper<Text, Text, Text, Text>
{
private Text word = new Text();
public void map(Text key, Text value, Context context) throws IOException, InterruptedException
{
StringTokenizer itr = new StringTokenizer(value.toString(),",");
while (itr.hasMoreTokens())
{
word.set(itr.nextToken());
context.write(key, word);
}
}
}
public static class AllTranslationsReducer
extends Reducer<Text,Text,Text,Text>
{
private Text result = new Text();
public void reduce(Text key, Iterable<Text> values,
Context context
) throws IOException, InterruptedException
{
String translations = "";
for (Text val : values)
{
translations += "|"+val.toString();
}
result.set(translations);
context.write(key, result);
}
}
public static void main(String[] args) throws Exception
{
Configuration conf = new Configuration();
Job job = new Job(conf, "dictionary");
job.setJarByClass(testhdfs.class);
job.setMapperClass(WordMapper.class);
job.setReducerClass(AllTranslationsReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(Text.class);
job.setInputFormatClass(KeyValueTextInputFormat.class);
FileInputFormat.addInputPath(job, new Path("/testext"));
FileOutputFormat.setOutputPath(job, new Path("resulthdfs"));
System.exit(job.waitForCompletion(true) ? 0 : 1);
}
}
堆栈跟踪:
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.hadoop.conf.Configuration.addDeprecation(Ljava/lang/String;[Ljava/lang/String;)V
at org.apache.hadoop.mapreduce.util.ConfigUtil.addDeprecatedKeys(ConfigUtil.java:53)
at org.apache.hadoop.mapreduce.util.ConfigUtil.loadResources(ConfigUtil.java:41)
at org.apache.hadoop.mapreduce.Job.<clinit>(Job.java:108)
at testhdfs.main(testhdfs.java:49)
1条答案
按热度按时间xghobddn1#
NoSuchMethodError
例外几乎总是意味着你有一些奇怪的dependency
问题和错误jar
有什么事或缺了什么东西jar
.