新手,MapReduce去重运算,Configuration报错。

兵工厂三剑客 2017-02-06 12:37:05
从网上找了一段代码,想自己编译运行下。但是报错了。代码如下:

package temperature;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.*;
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;
import org.apache.hadoop.util.GenericOptionsParser;
public class Temperature {

//map将输入中的value复制到输出数据的key上,并直接输出

public static class Map extends Mapper<Object,Text,Text,Text>{

private static Text line=new Text();//每行数据

//实现map函数

public void map(Object key,Text value,Context context)

throws IOException,InterruptedException{

line=value;

context.write(line, new Text(""));
}
}

//reduce将输入中的key复制到输出数据的key上,并直接输出

public static class Reduce extends Reducer<Text,Text,Text,Text>{

//实现reduce函数
public void reduce(Text key,Iterable<Text> values,Context context)

throws IOException,InterruptedException{

context.write(key, new Text(""));

}
}

public static void main(String[] args) throws Exception{

Configuration conf = new Configuration();
//这句话很关键
conf.set("mapred.job.tracker", "hdfs://localhost:9000");

String[] ioArgs=new String[]{"input","output"};

String[] otherArgs = new GenericOptionsParser(conf, ioArgs).getRemainingArgs();

if (otherArgs.length != 2) {
System.err.println("Usage: Data Deduplication <in> <out>");
System.exit(2);
}
}
}



报错信息:


Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
at org.apache.hadoop.conf.Configuration.<clinit>(Configuration.java:177)
at temperature.Temperature.main(Temperature.java:48)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 2 more


我用的hadoop2.7.3,是在Linux环境下,在Eclipse中直接run的。

麻烦大家帮忙解决下。纯新手,运行的第1个MapReduce例子。
...全文
485 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
johnny00000 2017-08-31
  • 打赏
  • 举报
回复
好像是 没有加载主类。要不就是 你在把代码导出jar文件时 没有指定主类
兵工厂三剑客 2017-02-24
  • 打赏
  • 举报
回复
解决了。要先在Eclipse中添加一个hadoop-eclipse-plugin插件。然后再配置一些其他的东西。
兵工厂三剑客 2017-02-21
  • 打赏
  • 举报
回复
引用 2 楼 yuyuyuxiaolei 的回复:
配置问题吧,
配置应该没问题,我是按照网上的教程配置的。
johnny00000 2017-02-17
  • 打赏
  • 举报
回复
配置问题吧,
qq_31325191 2017-02-06
  • 打赏
  • 举报
回复
java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory 你把common目录下的jar包以及common/lib目录下的jar都导入工程试试

20,808

社区成员

发帖
与我相关
我的任务
社区描述
Hadoop生态大数据交流社区,致力于有Hadoop,hive,Spark,Hbase,Flink,ClickHouse,Kafka,数据仓库,大数据集群运维技术分享和交流等。致力于收集优质的博客
社区管理员
  • 分布式计算/Hadoop社区
  • 涤生大数据
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧