MapReduce 本机运行
文章目录
- MapReduce 本机运行
- ✅前置工作
- 1. 配置JDK
- 2. 创建Java项目
- 3. 导入所需JAR包
- 编程实现以下题目
- 1. 统计各个月份共享单车使用的总数
- 2. 统计不同天气情况下共享单车使用的总数
- 3. 统计每个季度共享单车使用的总数
- 4. 统计每个月份的注册数量
- 5. 统计每天12:00-15:00时间段内的共享单车的使用总数
- 6. 统计不同温度(取整)下共享单车的使用总数(如24度100)
自行车共享系统是租赁自行车的一种新模式,客户通过整个城市的自助服务终端网络实现自动获得会员资格、租赁和返还自行车,全过程无需他人的参与。自行车共享系统生成的数据明确记录了旅行的时间,出发地点,和到达地点。因此,自行车共享系统作为传感器网络,可用于研究城市中的移动性。
附件1:train.csv(共11个字段,5422条数据)给出了某共享单车2011年1月-2011年12月实际气象参数、天气、季节、假期等数据记录。主要包括以下内容:
列名 | 类型 | 说明 | 示例 |
---|---|---|---|
id | string | 数据唯一标识 | 10886 |
datetime | string | 数据记录时间(s) | 2011/12/100:00 |
season | int | 数据记录季度 | 1 |
holiday | boolean | 数据记录假期 | 0 |
workingday | boolean | 数据记录工作日 | 1 |
weather | int | 数据记录天气 | 3 |
temp | float | 温度(0.01℃) | 10.66 |
humidity | int | 湿度 | 56 |
windspeed | float | 风速 | 26.0027 |
registered | int | 注册数量 | 10 |
count | int | 总数 | 13 |
附件2:weather列说明
Weather列数据 | 说明 |
---|---|
1 | 晴朗,很少云,部分多云,部分多云 |
2 | 小雪,小雨+雷电+少云,小雨+少云 |
3 | 雾+多云,薄雾+少云,薄雾+少量云雾,雾 |
4 | 大雨+冰雹+雷电+雾,雪+雾 |
✅前置工作
传入src代码包,可以使用XFTP工具进行上传
cd /home/hadoop/
mkdir workSpace
mv src/ workSpace
cd /usr/local/eclipse
# 启动eclipse
./eclipse
1. 配置JDK
-
打开eclipse后 → \rightarrow →点击Window → \rightarrow →点击Preference
-
在搜索框中输入 jre\rightarrow点击Installed JREs\rightarrow点击Add…
-
点击Standard VM
-
找到自己的JDK安装路径
-
勾选JDK
2. 创建Java项目
-
点击Create a project
-
选择Java Project
-
创建一个项目名为 ShareBike 的项目
-
在src下创建entity包
3. 导入所需JAR包
-
选中 ShareBike 项目 → \rightarrow →右键点击Properties
-
点击Java Build Path → \rightarrow →点击Add External JARs…
-
选中导入
/usr/local/hadoop/share/hadoop/common/
中的全部jar包
-
选中导入
/usr/local/hadoop/share/hadoop/common/lib/
中的全部jar包
-
选中导入
/usr/local/hadoop/share/hadoop/hdfs/
下的全部jar包
-
选中导入
/usr/local/hadoop/share/hadoop/hdfs/lib
下的全部jar包
-
选中导入
/usr/local/hadoop/share/hadoop/mapreduce/
下的全部jar包
-
选中导入
/usr/local/hadoop/share/hadoop/mapreduce/lib/
下的全部jar包
-
选中导入
/usr/local/hadoop/share/hadoop/yarn/
下的全部jar包
编程实现以下题目
1. 统计各个月份共享单车使用的总数
-
把 train1.csv 上传到HDFS的
/user/hadoop/input
文件夹中# 在HDFS的/user/hadoop中创建一个input文件夹 hdfs dfs -mkdir /user/hadoop/input # 把当前目录中的train1.csv文件上传到input文件夹下 hdfs dfs -put train1.csv /user/hadoop/input
-
把代码中的
sharedbikecountbymonth/
文件夹复制到eclipse的src工作目录下 -
然后把 SharedBikeCountByMonth.java 其中的代码路径代码改成下面的代码
// 6 设置输入输出路径 FileInputFormat.setInputPaths(job, new Path("hdfs://localhost:9000/input/train1.csv")); FileOutputFormat.setOutputPath(job, new Path("hdfs://localhost:9000/output")); // 修改后的代码如下 FileInputFormat.setInputPaths(job, new Path("hdfs://localhost:9000/user/hadoop/input/train1.csv")); FileOutputFormat.setOutputPath(job, new Path("hdfs://localhost:9000/user/hadoop/output"));
-
在运行程序前需要先删除HDFS中的output目录,否则会运行失败
hdfs dfs -rm -r /user/hadoop/output
-
然后运行如下代码查看结果
hdfs dfs -cat /output/part-r-00000
2. 统计不同天气情况下共享单车使用的总数
-
在运行程序前需要先删除HDFS中的output目录,否则会运行失败
hdfs dfs -rm -r /user/hadoop/output
-
按下 Ctrl+C 复制
sharedbikecountbyweather
文件夹,到eclipse的src工作目录下按下 Ctrl+V 粘贴
-
依旧修改代码
// 6 设置输入输出路径 FileInputFormat.setInputPaths(job, new Path("hdfs://localhost:9000/input/train1.csv")); FileOutputFormat.setOutputPath(job, new Path("hdfs://localhost:9000/output")); // 修改后的代码如下 FileInputFormat.setInputPaths(job, new Path("hdfs://localhost:9000/user/hadoop/input/train1.csv")); FileOutputFormat.setOutputPath(job, new Path("hdfs://localhost:9000/user/hadoop/output"));
-
运行该程序,出现下方情况即为成功
-
然后运行如下代码查看结果
hdfs dfs -cat /output/part-r-00000
3. 统计每个季度共享单车使用的总数
-
在运行程序前需要先删除HDFS中的output目录,否则会运行失败
hdfs dfs -rm -r /user/hadoop/output
-
按下 Ctrl+C 复制
sharedbikecountbyseason
文件夹,到eclipse的src工作目录下按下 Ctrl+V 粘贴
-
依旧修改代码
// 6 设置输入输出路径 FileInputFormat.setInputPaths(job, new Path("hdfs://localhost:9000/input/train1.csv")); FileOutputFormat.setOutputPath(job, new Path("hdfs://localhost:9000/output")); // 修改后的代码如下 FileInputFormat.setInputPaths(job, new Path("hdfs://localhost:9000/user/hadoop/input/train1.csv")); FileOutputFormat.setOutputPath(job, new Path("hdfs://localhost:9000/user/hadoop/output"));
-
运行该程序,出现下方情况即为成功
-
然后运行如下代码查看结果
hdfs dfs -cat /output/part-r-00000
4. 统计每个月份的注册数量
-
在运行程序前需要先删除HDFS中的output目录,否则会运行失败
hdfs dfs -rm -r /user/hadoop/output
-
按下 Ctrl+C 复制
sharedbikecountbyregistered
文件夹,到eclipse的src工作目录下按下 Ctrl+V 粘贴
-
依旧修改代码
// 6 设置输入输出路径 FileInputFormat.setInputPaths(job, new Path("hdfs://localhost:9000/input/train1.csv")); FileOutputFormat.setOutputPath(job, new Path("hdfs://localhost:9000/output")); // 修改后的代码如下 FileInputFormat.setInputPaths(job, new Path("hdfs://localhost:9000/user/hadoop/input/train1.csv")); FileOutputFormat.setOutputPath(job, new Path("hdfs://localhost:9000/user/hadoop/output"));
-
运行该程序,出现下方情况即为成功
-
然后运行如下代码查看结果
hdfs dfs -cat /output/part-r-00000
5. 统计每天12:00-15:00时间段内的共享单车的使用总数
-
在运行程序前需要先删除HDFS中的output目录,否则会运行失败
hdfs dfs -rm -r /user/hadoop/output
-
按下 Ctrl+C 复制
sharedbikecountbytime
文件夹,到eclipse的src工作目录下按下 Ctrl+V 粘贴
-
依旧修改代码
// 6 设置输入输出路径 FileInputFormat.setInputPaths(job, new Path("hdfs://localhost:9000/input/train1.csv")); FileOutputFormat.setOutputPath(job, new Path("hdfs://localhost:9000/output")); // 修改后的代码如下 FileInputFormat.setInputPaths(job, new Path("hdfs://localhost:9000/user/hadoop/input/train1.csv")); FileOutputFormat.setOutputPath(job, new Path("hdfs://localhost:9000/user/hadoop/output"));
-
运行该程序,出现下方情况即为成功
-
然后运行如下代码查看结果
hdfs dfs -cat /output/part-r-00000
6. 统计不同温度(取整)下共享单车的使用总数(如24度100)
-
在运行程序前需要先删除HDFS中的output目录,否则会运行失败
hdfs dfs -rm -r /user/hadoop/output
-
按下 Ctrl+C 复制
sharedbikecountbytemp
文件夹,到eclipse的src工作目录下按下 Ctrl+V 粘贴
-
依旧修改代码
// 6 设置输入输出路径 FileInputFormat.setInputPaths(job, new Path("hdfs://localhost:9000/input/train1.csv")); FileOutputFormat.setOutputPath(job, new Path("hdfs://localhost:9000/output")); // 修改后的代码如下 FileInputFormat.setInputPaths(job, new Path("hdfs://localhost:9000/user/hadoop/input/train1.csv")); FileOutputFormat.setOutputPath(job, new Path("hdfs://localhost:9000/user/hadoop/output"));
>
-
运行该程序,出现下方情况即为成功
-
然后运行如下代码查看结果
hdfs dfs -cat /output/part-r-00000