为了账号安全,请及时绑定邮箱和手机立即绑定

正在回答

3 回答

http://img1.sycdn.imooc.com//5e5653910001824a06490151.jpg大佬们,本人刚刚接触hadoop就遇到这个,这个问题我太头疼了,大佬们请帮我一下!!!

0 回复 有任何疑惑可以回复我~
#1

帝国大学

main()中添加 job.setJarByClass(WordCountJob.class);
2021-04-22 回复 有任何疑惑可以回复我~

/创建静态内部类MyMapper

public static class MyMapper extends Mapper<LongWritable,Text,Text,LongWritable>{

//调用自带的map()函数

protected void map(LongWritable k1,Text v1,Context context) 

throws IOException,InterruptedException{

//k1代表的是每一行的偏移量,v1代表的是每一行的内容

//将传送进来的每一行数据切割,切割成单词

String[] words =v1.toString().split(" ");

//迭代切割出来的单词数据

for(String word:words) {

//将迭代出来的单词数据封装成<k2,v2>

Text k2 =new Text(word);

LongWritable v2=new LongWritable();

     //把<k2,v2>写出去

context.write(k2, v2);

}

}

}

//创建自定义静态内部类MyReducer

public static class MyReducer extends Reducer<Text,LongWritable,Text,LongWritable>{

/*

* 针对v2s做累加求和,并且最终把<k3,v3>写出去

*/

protected void reducer(Text k2,Iterable<LongWritable> v2s,Context context)

      throws IOException,InterruptedException{

//创建一个表量sum来保存v2s的累加值

long sum=0;

for(LongWritable v2:v2s) {

sum=sum+v2.get();

}

//组装<k3,v3>

Text k3=k2;

LongWritable v3=new LongWritable(sum);

//把组装好的<k3,v3>写出去

context.write(k3, v3);

}

}

代码好像没什么问题?

1 回复 有任何疑惑可以回复我~

我猜你的map的初始值是0吧?而且reduce没有求和,检查一下你的代码?

0 回复 有任何疑惑可以回复我~
#1

qq_慕斯2033129 提问者

我的代码是这样,应该没问题呀?
2020-02-12 回复 有任何疑惑可以回复我~
#2

0CJJ0 回复 qq_慕斯2033129 提问者

你map函数里面的写成了LongWritable v2=new LongWritable();缺少初始值吧,这里的V2要给初始值,你试一下改成这样LongWritable v2=new LongWritable(1L);
2020-02-17 回复 有任何疑惑可以回复我~
#3

0CJJ0 回复 qq_慕斯2033129 提问者

试一下改成LongWritable v2=new LongWritable(1L);
2020-02-17 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

跪求各位大神

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信