使用课堂讲解的Hadoop mapreduce,编写map类和reduce类。(至少完成2项)
(1)对天气数据,计算每个城市id的最高气温(最大值)
(2)对天气数据,计算每个城市id的最低气温(最小值)
(3)对天气数据,计算每个城市id的气温次数(计数)
(4)对天气数据,计算每个城市id的平均气温(平均值)
读取表格数据的时候把表头删掉,因为表头是字符串,数据是整数
教程开始
[评论可见]隐藏内容 - 管理员可见
export HADOOP_CLASSPATH=/root/Desktop/hadoop/hadoop-3.3.1/share/hadoop/common/hadoop-common-3.3.1.jar:/root/Desktop/hadoop/hadoop-3.3.1/share/hadoop/mapreduce/hadoop-mapreduce-client-common-3.3.1.jar:/root/Desktop/hadoop/hadoop-3.3.1/share/hadoop/common/lib/commons-cli-1.2.jar:/root/Desktop/hadoop/hadoop-3.3.1/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-3.3.1.jar:/root/Desktop/hadoop/hadoop-3.3.1/share/hadoop/mapreduce/hadoop-mapreduce-client-core-3.3.1.jar
以上命令注意事项:
- jar包的路径根据自己实际情况修改,不要无脑复制粘贴
- 该命令是暂时性的,只在一次控制台窗口生效,关闭控制台窗口再重新打开需重新运行此命令,也可永久指定,在该文件内指定即可/etc/profile(不建议永久指定)
javac -classpath $HADOOP_CLASSPATH -d container WordCount.java
对以上命令的说明:
- $HADOOP_CLASSPATH:这个是第一步指定的环境变量,里面有编译该程序的jar包,不需更改
- container:存放编译Java程序后的字节码文件(.class结尾),可根据实际情况任意指定
- WordCount.java:要编译的JAVA文件,文章最后会给出,根据实际情况更改,根据不同的题目指定不同的Java程序
jar -cvf norths.jar -C container/ .
对以上命令的说明:
- norths.jar:打包成jar包后的名字,可根据实际情况任意指定
- container/ .:把对应文件夹下的字节码文件打包成jar包,因为上一步我们把字节码存放到了container文件夹中,所以在这一步我们把该文件夹中的字节码文件打包成jar包
hadoop jar /root/Desktop/mapreduce/norths.jar WordCount /wordcount/input/temperatures.csv /wordcount/output-1
对以上命令的说明:
- /root/Desktop/mapreduce/norths.jar:上一步打包的jar包的存放路径,对应的是linux本地的路径
- WordCount:java程序的类名
- /wordcount/input/temperatures.csv:要处理的文件的路径,对应的是hadoop上的路径
- /wordcount/output-1:处理完文件后结果的存放路径,对应的是hadoop上的路径(此路径不能是已经存在的路径)
本教程省略了在本地新建文件,并把文件上传到hadoop文件系统的步骤,因为能看这个教程的默认已经掌握这些基本操作
对一个包含大量整数的文件进行统计分析,将尾数相同的数字放在同一个文件中(用分区实现)。
[评论可见]隐藏内容 - 管理员可见
参考第一题运行过程:
注意事项:
读取的文件变了,不再是表格了,是自己随便指定的
Java程序的类名变了,注意更改