前端时间我们介绍过在eclipse里运行hadoop自带的关于wordcount的实例, 今天我们在原来的基础上继续介绍关于一些MapReduce的代码编程案例。
在开始工程之前, 请先确保你的DFS Locations 已经连接到Hadoop, 如果没有配置的,可以出门左转反馈我之前的介绍
###在Eclipse中创建MapReduce项目
点击File菜单, 选择New->Project…, 在新打开的窗体里选择 Map/Reduce Project, 点击Next, 按照提示默认的配置,
新建工程名为WordCountDemo, 创建好之后,点击Finish。
###在刚刚新建的工程里,新建 Sort.java 类
源码:
1 | package com.au.example; |
创建好之后,我们需要几个输入源数据文件到hadoop的/sort_in文件夹中。
操作步骤:
- 在hadoop中新建/sort_in文件夹
1 | hdfs dfs -mkdir /sort_in |
- 将源数据文件上传到/sort_in文件夹中
这里输入文件为 file1.txt, file2.txt, file3.txt
其中:
file1.txt文件中的数据
1 | 2 |
file2.txt文件中的数据
1 | 5956 |
file3.txt文件中的数据
1 | 26 |
注意: 上述文件中的数据,不要有空格,否则会把数字解析为字符串, 影响程序的执行;
上传命令为
1 | hdfs dfs -put file1.txt /sort_in |
上传完之后,运行Sort.java, 注意在工程的src目录下添加hadoop中的log4j.properties,否则在java的控制台不会输出执行的日志信息
执行完后,可以在DFS Locations里看到, 点击Refresh看到输入文件夹和输出文件夹的相关文件
并且打开文件看上述的结果为:
###关于去重的实例: 新建 DiffData.java 类
源码
1 | package com.au.example; |
- 同理,我们按上上述步骤在hadoop新建/inputchar文件夹;
- 上传的数据源文件为file1.txt, file2.txt;
其中,file1.txt文件内容为:
1 | 2012-3-1 a |
其中,file2.txt文件内容为:
1 | 2012-3-1 b |
- 最后执行的结果为:
###关于求平均数的实例: 新建 Average.java 类
源码
1 | package com.autohome.example; |
- 同理,我们按上上述步骤在hadoop新建/average_in文件夹;
- 上传的数据源文件为file1.txt, file2.txt, file3.txt;
其中,file1.txt文件内容为:
1 | 张三 88 |
其中,file2.txt文件内容为:
1 | 张三 78 |
其中,file3.txt文件内容为:
1 | 张三 80 |
- 最后执行的结果为: