MapReduce共享单车练习

MapReduce 本机运行


自行车共享系统是租赁自行车的一种新模式,客户通过整个城市的自助服务终端网络实现自动获得会员资格、租赁和返还自行车,全过程无需他人的参与。自行车共享系统生成的数据明确记录了旅行的时间,出发地点,和到达地点。因此,自行车共享系统作为传感器网络,可用于研究城市中的移动性。

附件1:train.csv(共11个字段,5422条数据)给出了某共享单车2011年1月-2011年12月实际气象参数、天气、季节、假期等数据记录。主要包括以下内容:

列名类型说明示例
idstring数据唯一标识10886
datetimestring数据记录时间(s)2011/12/100:00
seasonint数据记录季度1
holidayboolean数据记录假期0
workingdayboolean数据记录工作日1
weatherint数据记录天气3
tempfloat温度(0.01℃)10.66
humidityint湿度56
windspeedfloat风速26.0027
registeredint注册数量10
countint总数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

  1. 打开eclipse后 → \rightarrow 点击Window → \rightarrow 点击Preference
    image-20230610191611549

  2. 在搜索框中输入 jre → \rightarrow 点击Installed JREs → \rightarrow 点击Add…
    image-20230610235627582

  3. 点击Standard VM
    image-20230610191817636

  4. 找到自己的JDK安装路径
    image-20230610191843190

  5. 勾选JDK
    image-20230610191929230

2. 创建Java项目

  1. 点击Create a project
    image-20230610191150078

  2. 选择Java Project
    image-20230610191232369

  3. 创建一个项目名为 ShareBike 的项目
    image-20230610192050728

  4. 在src下创建entity包
    image-20230610192420143

3. 导入所需JAR包

  1. 选中 ShareBike 项目 → \rightarrow 右键点击Properties
    image-20230610204039589

  2. 点击Java Build Path → \rightarrow 点击Add External JARs…
    image-20230610204146984

  3. 选中导入 /usr/local/hadoop/share/hadoop/common/ 中的全部jar包
    image-20230610204344850

  4. 选中导入 /usr/local/hadoop/share/hadoop/common/lib/ 中的全部jar包
    image-20230610204437522

  5. 选中导入 /usr/local/hadoop/share/hadoop/hdfs/ 下的全部jar包
    image-20230610204522014

  6. 选中导入 /usr/local/hadoop/share/hadoop/hdfs/lib 下的全部jar包
    image-20230611001206648

  7. 选中导入 /usr/local/hadoop/share/hadoop/mapreduce/ 下的全部jar包
    image-20230610204634824

  8. 选中导入 /usr/local/hadoop/share/hadoop/mapreduce/lib/ 下的全部jar包
    image-20230610204712964

  9. 选中导入 /usr/local/hadoop/share/hadoop/yarn/ 下的全部jar包
    image-20230610204807484

编程实现以下题目

1. 统计各个月份共享单车使用的总数

  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
    
  2. 把代码中的 sharedbikecountbymonth/ 文件夹复制到eclipse的src工作目录下

  3. 然后把 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"));
    
    image-20230610210229115
  4. 在运行程序前需要先删除HDFS中的output目录,否则会运行失败

    hdfs dfs -rm -r /user/hadoop/output
    
  5. 然后运行如下代码查看结果

    hdfs dfs -cat /output/part-r-00000
    
    image-20230610214947695

2. 统计不同天气情况下共享单车使用的总数

  1. 在运行程序前需要先删除HDFS中的output目录,否则会运行失败

    hdfs dfs -rm -r /user/hadoop/output
    
    image-20230610222557547
  2. 按下 Ctrl+C 复制 sharedbikecountbyweather 文件夹,到eclipse的src工作目录下按下 Ctrl+V 粘贴
    image-20230610222641870

  3. 依旧修改代码

    // 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"));
    
    image-20230610223607476
  4. 运行该程序,出现下方情况即为成功
    image-20230610223607476

  5. 然后运行如下代码查看结果

    hdfs dfs -cat /output/part-r-00000
    
    image-20230610224529276

3. 统计每个季度共享单车使用的总数

  1. 在运行程序前需要先删除HDFS中的output目录,否则会运行失败

    hdfs dfs -rm -r /user/hadoop/output
    
    image-20230610222557547
  2. 按下 Ctrl+C 复制 sharedbikecountbyseason 文件夹,到eclipse的src工作目录下按下 Ctrl+V 粘贴
    image-20230610225305716

  3. 依旧修改代码

    // 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"));
    
    image-20230610223607476
  4. 运行该程序,出现下方情况即为成功
    image-20230610225759607

  5. 然后运行如下代码查看结果

    hdfs dfs -cat /output/part-r-00000
    
    image-20230610231816916

4. 统计每个月份的注册数量

  1. 在运行程序前需要先删除HDFS中的output目录,否则会运行失败

    hdfs dfs -rm -r /user/hadoop/output
    
    image-20230610222557547
  2. 按下 Ctrl+C 复制 sharedbikecountbyregistered 文件夹,到eclipse的src工作目录下按下 Ctrl+V 粘贴
    image-20230610232543204

  3. 依旧修改代码

    // 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"));
    
    image-20230610223607476
  4. 运行该程序,出现下方情况即为成功
    image-20230610232807666

  5. 然后运行如下代码查看结果

    hdfs dfs -cat /output/part-r-00000
    
    image-20230610232903121

5. 统计每天12:00-15:00时间段内的共享单车的使用总数

  1. 在运行程序前需要先删除HDFS中的output目录,否则会运行失败

    hdfs dfs -rm -r /user/hadoop/output
    
    image-20230610222557547
  2. 按下 Ctrl+C 复制 sharedbikecountbytime 文件夹,到eclipse的src工作目录下按下 Ctrl+V 粘贴
    image-20230610233234707

  3. 依旧修改代码

    // 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"));
    
    image-20230610223607476
  4. 运行该程序,出现下方情况即为成功
    image-20230610233431832

  5. 然后运行如下代码查看结果

    hdfs dfs -cat /output/part-r-00000
    
    image-20230610234009031

6. 统计不同温度(取整)下共享单车的使用总数(如24度100)

  1. 在运行程序前需要先删除HDFS中的output目录,否则会运行失败

    hdfs dfs -rm -r /user/hadoop/output
    
    image-20230610222557547
  2. 按下 Ctrl+C 复制 sharedbikecountbytemp 文件夹,到eclipse的src工作目录下按下 Ctrl+V 粘贴
    image-20230610234311625

  3. 依旧修改代码

    // 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"));
    

    image-20230610223607476>

  4. 运行该程序,出现下方情况即为成功
    image-20230610234541752

  5. 然后运行如下代码查看结果

    hdfs dfs -cat /output/part-r-00000
    
    image-20230610234638178
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值