MapReduce共享单车练习

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

  1. 打开eclipse后 → \rightarrow 点击Window → \rightarrow 点击Preference
    MapReduce共享单车练习_第1张图片

  2. 在搜索框中输入 jre\rightarrow点击Installed JREs\rightarrow点击Add…
    MapReduce共享单车练习_第2张图片

  3. 点击Standard VM
    MapReduce共享单车练习_第3张图片

  4. 找到自己的JDK安装路径
    MapReduce共享单车练习_第4张图片

  5. 勾选JDK
    MapReduce共享单车练习_第5张图片

2. 创建Java项目

  1. 点击Create a project
    MapReduce共享单车练习_第6张图片

  2. 选择Java Project
    MapReduce共享单车练习_第7张图片

  3. 创建一个项目名为 ShareBike 的项目
    MapReduce共享单车练习_第8张图片

  4. 在src下创建entity包
    MapReduce共享单车练习_第9张图片

3. 导入所需JAR包

  1. 选中 ShareBike 项目 → \rightarrow 右键点击Properties
    MapReduce共享单车练习_第10张图片

  2. 点击Java Build Path → \rightarrow 点击Add External JARs…
    MapReduce共享单车练习_第11张图片

  3. 选中导入 /usr/local/hadoop/share/hadoop/common/ 中的全部jar包
    MapReduce共享单车练习_第12张图片

  4. 选中导入 /usr/local/hadoop/share/hadoop/common/lib/ 中的全部jar包
    MapReduce共享单车练习_第13张图片

  5. 选中导入 /usr/local/hadoop/share/hadoop/hdfs/ 下的全部jar包
    MapReduce共享单车练习_第14张图片

  6. 选中导入 /usr/local/hadoop/share/hadoop/hdfs/lib 下的全部jar包
    MapReduce共享单车练习_第15张图片

  7. 选中导入 /usr/local/hadoop/share/hadoop/mapreduce/ 下的全部jar包
    MapReduce共享单车练习_第16张图片

  8. 选中导入 /usr/local/hadoop/share/hadoop/mapreduce/lib/ 下的全部jar包
    MapReduce共享单车练习_第17张图片

  9. 选中导入 /usr/local/hadoop/share/hadoop/yarn/ 下的全部jar包
    MapReduce共享单车练习_第18张图片

编程实现以下题目

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"));
    
    MapReduce共享单车练习_第19张图片
  4. 在运行程序前需要先删除HDFS中的output目录,否则会运行失败

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

    hdfs dfs -cat /output/part-r-00000
    
    MapReduce共享单车练习_第20张图片

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

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

    hdfs dfs -rm -r /user/hadoop/output
    
    image-20230610222557547
  2. 按下 Ctrl+C 复制 sharedbikecountbyweather 文件夹,到eclipse的src工作目录下按下 Ctrl+V 粘贴
    MapReduce共享单车练习_第21张图片

  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. 运行该程序,出现下方情况即为成功
    MapReduce共享单车练习_第22张图片

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

    hdfs dfs -cat /output/part-r-00000
    
    MapReduce共享单车练习_第23张图片

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

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

    hdfs dfs -rm -r /user/hadoop/output
    
    image-20230610222557547
  2. 按下 Ctrl+C 复制 sharedbikecountbyseason 文件夹,到eclipse的src工作目录下按下 Ctrl+V 粘贴
    MapReduce共享单车练习_第24张图片

  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. 运行该程序,出现下方情况即为成功
    MapReduce共享单车练习_第25张图片

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

    hdfs dfs -cat /output/part-r-00000
    
    MapReduce共享单车练习_第26张图片

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

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

    hdfs dfs -rm -r /user/hadoop/output
    
    image-20230610222557547
  2. 按下 Ctrl+C 复制 sharedbikecountbyregistered 文件夹,到eclipse的src工作目录下按下 Ctrl+V 粘贴
    MapReduce共享单车练习_第27张图片

  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. 运行该程序,出现下方情况即为成功
    MapReduce共享单车练习_第28张图片

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

    hdfs dfs -cat /output/part-r-00000
    
    MapReduce共享单车练习_第29张图片

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 粘贴
    MapReduce共享单车练习_第30张图片

  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. 运行该程序,出现下方情况即为成功
    MapReduce共享单车练习_第31张图片

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

    hdfs dfs -cat /output/part-r-00000
    
    MapReduce共享单车练习_第32张图片

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

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

    hdfs dfs -rm -r /user/hadoop/output
    
    image-20230610222557547
  2. 按下 Ctrl+C 复制 sharedbikecountbytemp 文件夹,到eclipse的src工作目录下按下 Ctrl+V 粘贴
    MapReduce共享单车练习_第33张图片

  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. 运行该程序,出现下方情况即为成功
    MapReduce共享单车练习_第34张图片

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

    hdfs dfs -cat /output/part-r-00000
    
    MapReduce共享单车练习_第35张图片

你可能感兴趣的:(大数据开发技术,mapreduce,eclipse,java,大数据,centos)