我是靠谱客的博主 任性心情,最近开发中收集的这篇文章主要介绍hadoop的数据倾斜之自定义分区解决(记录七----3)https://mp.csdn.net/postedit/86479744(hadoop的数据倾斜之自定义分区解决(记录七----2))解决数据倾斜问题第一阶段:设置随机分区:(代码和结果如下)结果<主要看“a”的数量>,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

https://mp.csdn.net/postedit/86479744(hadoop的数据倾斜之自定义分区解决(记录七----2))

解决数据倾斜问题第一阶段:

设置随机分区:(代码和结果如下)

/**
* 数据倾斜
*/
public class SkewApp {
public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
Configuration configuration=new Configuration();
configuration.set("fs.defaultFS","file:///");
Job job= Job.getInstance(configuration);
job.setJobName("SkewApp");
job.setJarByClass(SkewApp.class);
job.setInputFormatClass(TextInputFormat.class);
FileInputFormat.addInputPath(job,new Path("d:/MR/skew/*"));
FileOutputFormat.setOutputPath(job,new Path("d:/MR/skew/out2"));
//设置分区函数
job.setPartitionerClass(MyPartition.class);
job.setMapperClass(SloveSkewMapper.class);
job.setReducerClass(SkewReducer.class);
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(IntWritable.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
job.setNumReduceTasks(4);
job.waitForCompletion(true);
}
}
//map函数
class SloveSkewMapper extends Mapper<LongWritable,Text,Text,IntWritable> {
@Override
protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
String[] arr=value.toString().split(" ");
Text keyOut=new Text();
IntWritable valueOut=new IntWritable();
for(String s:arr) {
keyOut.set(s);
valueOut.set(1);
context.write(keyOut,valueOut);
}
}
}
//reduce函数
public class SkewReducer extends Reducer<Text,IntWritable,Text,IntWritable> {
@Override
protected void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {
int count=0;
for(IntWritable iw:values){
count=count+iw.get();
}
context.write(key,new IntWritable(count));
}
}
//自定义分区
public class MyPartition extends Partitioner<Text,IntWritable> {
public int getPartition(Text o1, IntWritable o2, int i) {
return
new Random().nextInt(i);
}
}

结果<主要看“a”的数量>

part-r-00000
a	10
b16	1
b18	1
b19	1
b2	1
b25	1
b26	1
b27	1
b34	1
b38	1
b8	1
part-r-00001
a	14
b10	1
b12	1
b15	1
b17	1
b22	1
b29	1
b32	1
b36	1
b37	1
b4	1
b42	1
b9	1
part-r-00002
a	10
b1	1
b14	1
b20	1
b30	1
b31	1
b35	1
b43	1
b45	1
b5	1
b6	1
b7	1
part-r-00003
a	11
b11	1
b13	1
b21	1
b23	1
b24	1
b28	1
b3	1
b33	1
b39	1
b40	1
b41	1
b44	1

 

最后

以上就是任性心情为你收集整理的hadoop的数据倾斜之自定义分区解决(记录七----3)https://mp.csdn.net/postedit/86479744(hadoop的数据倾斜之自定义分区解决(记录七----2))解决数据倾斜问题第一阶段:设置随机分区:(代码和结果如下)结果<主要看“a”的数量>的全部内容,希望文章能够帮你解决hadoop的数据倾斜之自定义分区解决(记录七----3)https://mp.csdn.net/postedit/86479744(hadoop的数据倾斜之自定义分区解决(记录七----2))解决数据倾斜问题第一阶段:设置随机分区:(代码和结果如下)结果<主要看“a”的数量>所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部