我是靠谱客的博主 任性心情,最近开发中收集的这篇文章主要介绍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”的数量>所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复