博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hadoop--mapreduce--自定义key类型
阅读量:5007 次
发布时间:2019-06-12

本文共 2365 字,大约阅读时间需要 7 分钟。

问题:

输入文件A的样例如下(注意文件以tab为分隔符,粘贴时请检查):

20170101     x

20170102     y

20170103     x

20170104     y

20170105     z

20170106     x

 

 

 

 

 

 

 

输入文件B的样例如下:

20170101      y

20170102      y

20170103      x

20170104      z

20170105      y

 

 

 

 

 

 

根据输入文件A和B合并得到的输出文件C的样例如下:

20170101      x

20170101      y

20170102      y

20170103      x

20170104      y

20170104      z

20170105      y  20170105      z

20170106      x

 

 

 

 

 

 

 

 

 

 

代码实现:

1 import org. apache.hadoop.fs.Path; 2 import org.apache.hadoop.io.DoubleWritable; 3 import org.apache.hadoop.io.IntWritable; 4 import org.apache.hadoop.io.LongWritable; 5 import org.apache.hadoop.io.Text; 6 import org.apache.hadoop.mapreduce.Job; 7 import org.apache.hadoop.mapreduce.Mapper; 8 import org.apache.hadoop.mapreduce.Reducer; 9 import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;10 import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;11 import org.apache.hadoop.util.GenericOptionsParser;12 13 public class Task1 {14     public static class MapClass extends Mapper
{15 public void map(LongWritable key,Text value,Context context) throws IOException, InterruptedException {16 context.write(value, new Text(""));17 }18 }19 public static class ReduceClass extends Reducer
{20 public void reduce( Text key, Iterable
values,Context context) throws IOException, InterruptedException {21 context.write(key, new Text(""));22 }23 }24 public static void main(String args[]) throws IOException, ClassNotFoundException, InterruptedException {25 Configuration conf = new Configuration();26 Job job = new Job(conf);27 job.setJarByClass(Task1.class);28 job.setMapperClass(MapClass.class);29 job.setReducerClass(ReduceClass.class);30 job.setOutputKeyClass(Text.class);31 job.setOutputValueClass(Text.class);32 33 FileInputFormat.addInputPath(job, new Path("C:\\Users\\Administrator\\Desktop\\新建文件夹\\input2.txt") );34 FileInputFormat.addInputPath(job, new Path("C:\\Users\\Administrator\\Desktop\\\\新建文件夹\\input1.txt") );35 FileOutputFormat.setOutputPath(job, new Path("C:\\Users\\Administrator\\Desktop\\新建文件夹\\output"));36 37 System.exit(job.waitForCompletion(true)?0:1);38 }39 }

 结果:

 

 

 踩过的坑:

  reduce不执行的原因:

    1、程序出现过异常,可以通过日志来debug;

    2、参数类型不匹配;

    等

转载于:https://www.cnblogs.com/z-bear/p/9846089.html

你可能感兴趣的文章
实验八
查看>>
Linux下nc传输文档
查看>>
(转载)在C/C++程序里打印调用栈信息
查看>>
(转载)mysqli使用prepared语句
查看>>
[HDU] 4502 吉哥系列故事——临时工计划
查看>>
php XML 读写 创建
查看>>
Python学习--内置函数isinstance()
查看>>
git使用 git本地推送到远程分支 git基本操作 git合并分支
查看>>
「模板」线段树静态开点(单点+区间修改)、动态开点
查看>>
libusb-win32学习笔记(二)
查看>>
Leetcode 70. Climbing Stairs
查看>>
pagehelper用法
查看>>
python自动化第三天-python5
查看>>
2017-2018-2 20179306 《网络攻防技术》第八周作业
查看>>
设计模式
查看>>
使用IDEA整合SSM框架
查看>>
shell输出输入流常用符号解释
查看>>
1.线程生命周期
查看>>
border_mode
查看>>
printf中的short int, int, long int和long long int
查看>>