环境
CentOS 6.8 64位 1核 2GB
JDK 1.7.0_55 64 位
Hadoop 1.1.2
准备测试数据
- 创建部门文件 dept,内容如下
1 | 10,DEVELOP,BEIJING |
- 创建员工文件 emp,内容如下
1 | 7369,SMITH,PRIMARY,7902,17-12月-80,10500,,20 |
- 在 HDFS 创建 /class6/input 目录
1 | $ hadoop fs -mkdir -p /class6/input |
- 把 dept、emp 上传到 HDFS 中 /class6/input 目录中
1 | $ hadoop fs -copyFromLocal dept /class6/input |
- 在HDFS中查看 /class6/input 目录
1 | $ hadoop fs -ls /class6/input |
- 创建 /app/hadoop-1.1.2/myclass/class6 目录并进入
1 | $ cd /app/hadoop-1.1.2/myclass |
求各个部门的总工资
- 创建 Q1SumDeptSalary.java,代码如下
1 | import java.io.BufferedReader; |
- 编译打包
1 | $ javac -classpath ../../hadoop-core-1.1.2.jar:../../lib/commons-cli-1.2.jar Q1SumDeptSalary.java |
- 测试
1 | $ hadoop jar Q1SumDeptSalary.jar Q1SumDeptSalary hdfs://hadoop:9000/class6/input/dept hdfs://hadoop:9000/class6/input/emp hdfs://hadoop:9000/class6/out1 |
求各个部门的人数和平均工资
- 创建 Q2DeptNumberAveSalary.java,代码如下
1 | import java.io.BufferedReader; |
- 编译打包
1 | $ javac -classpath ../../hadoop-core-1.1.2.jar:../../lib/commons-cli-1.2.jar Q2DeptNumberAveSalary.java |
- 测试
1 | $ hadoop jar Q2DeptNumberAveSalary.jar Q2DeptNumberAveSalary hdfs://hadoop:9000/class6/input/dept hdfs://hadoop:9000/class6/input/emp hdfs://hadoop:9000/class6/out2 |