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月实际气象参数、天气、季节、假期等数据记录。主要包括以下内容:

列名类型说明示例
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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/27623.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【V4L2】v4l2框架分析之video_device

文章目录 🔺一、video_device分析(1-1)struct video_device结构(1-2)struct v4l2_ioctl_ops结构(1-3)v4l2_file_operations结构 🔺二、注册video设备🔺三、卸载清除video…

WPF开发txt阅读器6:用树形图管理书籍

txt阅读器系列: 需求分析和文件读写目录提取类💎列表控件与目录字体控件绑定书籍管理系统 TreeView控件 TreeView可以通过可折叠的节点来显示层次结构中的信息,是表达文件系统从属关系的不二选择,其最终效果如下 为了构建这个树…

KISS复盘法

KISS复盘法 KISS复盘法是一种科学的项目复盘方法,能够把过往经验转化为实践能力,以促进下一次活动更好地展开,从而不断提升个人和团队的能力! 模型介绍 【复盘】原是围棋术语,本意是对弈者在下完一盘棋之后&#xff0…

uniapp 横向滑动list(不同内容)分部问题:scroll-view,swiper overflow-x

横向滑动list,可使用标签: 1:scroll-view 2:swiper 3:overflow-x 正常来讲横向滑动的话 ,需要特殊设置,只用view 设置display:flex,的话 无法横向滑动,右边的就会隐…

git hook

hook hook 翻译为钩子,简单说就是监听某个事件(操作),然后触发自定义逻辑 在 git 中可以监听 commit,push 等操作,在操作之前或之后触发对应的 hook,在 hook 中写自定义的逻辑,比如…

Java Web开发实战经典学习过程笔记

Java Web开发实战经典学习简单笔记 第一章 Java Web 开发简介 1.胖客户端程序指的是,当一个程序运行时需要一个单独的客户端程序支持(如:QQ)。瘦客户端程序在操作时不需要任何其他程序的安装(如:登录网上论坛,只需浏览器即可)。 2…

算法刷题-链表-反转链表

反转链表 206.反转链表思路C代码双指针法递归法其他语言版本使用虚拟头结点解决链表翻转使用栈解决反转链表的问题 反转链表的写法很简单,一些同学甚至可以背下来但过一阵就忘了该咋写,主要是因为没有理解真正的反转过程。 206.反转链表 力扣题目链接 …

4.使用Express跨域资源共享(继上一章)

4.5、CORS跨域资源共享 1.接口的跨域问题 刚才编写的GET和POST接口,存在一个很严重的问题:不支持跨域请求。 解决接口跨域问题的方案主要有两种: ①CORS(主流的解决方案,推荐使用) ②JSONP&#xff08…

6.11下周黄金行情分析及开盘多空交易策略

近期有哪些消息面影响黄金走势?下周黄金多空该如何研判? ​黄金消息面解析:金价周五(6月8日)收低,但在美元整体走软的支撑下,本周录得连续第二周上升。美市尾盘,现货黄金收报1960.83美元/盎司,…

Seata介绍、原理、配置

目录 介绍: 核心组件: 原理: Seata 会有 4 种分布式事务解决方案,分别是 AT 模式、TCC 模式、Saga 模式和 XA 模式 AT模式原理: 一阶段: 二阶段提交: 二阶段回滚: Seata配置…

华为OD机试真题 JavaScript 实现【数字涂色】【2022Q4 100分】,附详细解题思路

一、题目描述 疫情过后,希望小学终于又重新开学了,三年二班开学第一天的任务是将后面的黑板报重新制作。 黑板上已经写上了N个正整数,同学们需要给这每个数分别上一种颜色。 为了让黑板报既美观又有学习意义,老师要求同种颜色的…

每个程序员都必须知道的8种通用数据结构

8种常用数据结构 数据结构是一种特殊的组织和存储数据的方式,可以使我们可以更高效地对存储的数据执行操作。数据结构在计算机科学和软件工程领域具有广泛而多样的用途。 几乎所有已开发的程序或软件系统都使用数据结构。此外,数据结构属于计算机科学和…

微服务eureka和nacos

服务远程调用 /*** 创建RestTemplate并注入Spring容器* return*/Beanpublic RestTemplate restTemplate(){return new RestTemplate();} Autowiredprivate RestTemplate restTemplate;public Order queryOrderById(Long orderId) {// 1.查询订单Order order orderMapper.fin…

JMeter 测试 ActiveMq

JMeter 测试 ActiveMq 的资料非常少, 我花了大量的时间才研究出来 关于ActiveMq 的文章请参考我另外的文章。 版本号: ActiveMq 版本号: 5.91 Jmeter 版本号: 1.13 添加ActiveMq 的jar包 将 ActiveMq 下的 "activemq-all-5.9.1.jar" 复制…

【2023】Redis cluster集群模式搭建

目录 1.cluster集群介绍2.搭建cluster集群2.1.架构图2.2.搭建集群2.2.1.创建所需配置文件2.2.2.创建集群所需容器2.2.3.创建集群:master1节点连接其他节点2.2.4.配置从节点,完成三主三从 3.在cluster集群内读写数据 1.cluster集群介绍 Redis Cluster是R…

[C++]异常笔记

我不怕练过一万种腿法的对手,就怕将一种腿法 练一万次的对手。 什么是C的异常 在C中,异常处理通常使用try-catch块来实现。try块用于包含可能会抛出异常的代码,而catch块用于捕获并处理异常。当异常被抛出时,程序会跳过try块中未执行…

【ABAP】数据类型(二)「预定义数据类型」

💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后端的开发语言A…

一文读懂 Mysql MVCC

💕💕 推荐:体系化学习Java(Java面试专题) 文章目录 1、什么是 MVCC2、什么是当前读、快照读3、MVCC 具体解决什么问题4、MVCC 的实现原理4.1、4个隐式字段4.2、undo 日志4.3、Read View 5、使用 MVCC 时,需…

【分布式系统与一致性协议】

分布式系统与一致性协议 CAP原理APCPCA总结BASE理论 一致性拜占庭将军问题 分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。 分布式系统的设计目标一般包含如下: 可用性:可用性是分…

JavaSE-04【方法】

文章目录 JavaSE-04【方法】第一章 方法1.1 方法定义的格式详解1.2 方法定义的三要素1.3 方法调用的流程图解1.4 方法定义的有无参数1.5 方法定义的有无返回值 第二章 方法调用方式以及注意事项2.1 方法调用的注意事项2.2 调用方法的三种形式 JavaSE-04【方法】 第一章 方法 …