MapReduce编程:1.groupBy, 统计每月航班延迟到达的比例

MapReduce编程:1.groupBy, 统计每月航班延迟到达的比例

题目要求

航空公司数据集,每一行包括如下数据
在这里插入图片描述
统计每月航班延迟到达的比例

分析
  1. 如果作为一个普通数学题,我们解题的步骤是先统计每个月的航班总数,然后统计每个月延时的航班的总数,然后做除法,所以放在计算机里面,我们可以在统计每个月航班总数的同时,也记录下延时的航班总数,然后做除法
  2. 那么利用MapReduce的思维,先进行map(任务分解),然后reduce(结果汇总)
  3. 对于map,要做的就是将任务分解,输入肯定是原始的文本,而输出的就是<月份,1>的键值对(因为MapReduce是一行一行读取数据,一行肯定只有一条数据,所以值为1),但是发现,值为1没办法区分是否延时,所以我们可以采用两个数进行区分,比如我使用的是1代表未延时,0表示延时(也可以使用别的数字),所以我的map就会出现两种结果,如果延时,结果为<月份,0>;如果未延时,结果为<月份,1>
  4. 对于reduce,要做的是将结果汇总(其实中间还有一步shuffle的过程,是将map的结果进行分类),输入是来自分类的map的处理结果,就是<月份,0和1的列表>,输出就是<月份,延时比例>
  5. 听懵了?没关系,下面用图和代码来解释
准备工作
  • ubuntu14环境
  • 已经启动的hadoop
  • 已经安装好hadoop插件的eclipse
  • 一个原始数据集

对于前三个东西,在上一篇博客已经介绍过了,对于最后一个,要自己准备

上一篇博客:https://blog.youkuaiyun.com/Dongroot/article/details/88562502

(下面的操作都是在ubuntu下进行)原始数据集怎么准备,在桌面新建一个txt文档,内容为。。。。难得写了,就是最上面那张图,然后以英文逗号隔开,一行一条记录,比如

在这里插入图片描述
我们需要关注的就是图中框起来的三列,分别是月份,飞机真实到达时间和原定到达时间,所以其他列的数据都是没用的,

<think>嗯,用户之前已经问过Hadoop的业务使用场景,现在接着问Hadoop生态中的几个组件:Hadoo(应该是Hadoop),Hive,HBase,Spark,Flink,各自的作用并举例。我需要确认用户是否有拼写错误,比如“hadoo”可能是指Hadoop。然后需要分别介绍每个工具,说明它们的用途、特点,并给出实际例子。 首先,用户可能对大数据生态系统的组件不太清楚,需要区分每个组件的功能和应用场景。比如Hadoop主要用于分布式存储和批处理,Hive是数据仓库工具,HBase是NoSQL数据库,Spark和Flink用于处理,但Spark侧重批处理和微批流,Flink则是真正的流处理。 要确保回答结构清晰,每个部分分开,用例子帮助理解。用户可能需要这些信息来选型或者理解现有技术栈,所以例子要贴近实际应用,比如电商、金融等行业的具体案例。 还要注意用户之前的问题里已经涉及Hadoop的场景,所以这里可能需要更简洁地总结Hadoop,重点放在其他组件上。同时,比较Spark和Flink的区别,避免混淆。 最后,检查是否遵循了系统级指令,比如数学公式的格式,但这里可能用不上。确保使用中文,结构清晰,分点说明,每个工具的名称加粗,例子明确。</think>以下是 **Hadoop、Hive、HBase、Spark、Flink** 的核心功能与典型应用场景的对比说明,结合实际案例帮助理解其差异: --- ### **1. Hadoop** - **定位**:分布式存储与批处理的基础框架。 - **核心组件**: - **HDFS**(分布式文件系统):存储海量数据(如日志、视频等)。 - **MapReduce**(计算模型):处理离线批量任务(如统计词频)。 - **特点**: - 高容错、高扩展,但编程复杂,适合处理 TB/PB 级数据。 - **案例**: - **银行历史交易分析**:每日凌晨用 MapReduce 批量统计过去 5 年所有用户的月均消费金额。 --- ### **2. Hive** - **定位**:基于 Hadoop 的数据仓库工具,提供类 SQL 查询(HiveQL)。 - **核心功能**: - 将结构化数据映射为 HDFS 文件,通过 SQL 语法执行离线分析。 - 底层依赖 MapReduce/Tez/Spark 进行计算。 - **特点**: - 适合非实时、高延迟的分析场景(分钟级到小时级)。 - **案例**: - **电商用户行为分析**:用 Hive 统计过去一个月内每个省份的订单量,生成地区销售报表: ```sql SELECT province, COUNT(order_id) FROM user_orders WHERE dt BETWEEN '20230101' AND '20230131' GROUP BY province; ``` --- ### **3. HBase** - **定位**:分布式 NoSQL 数据库,面向列的实时读写。 - **核心功能**: - 基于 HDFS 存储,支持高并发、低延迟(毫秒级)的随机访问。 - 数据模型为 `RowKey + Column Family:Column + Timestamp`。 - **特点**: - 适合存储稀疏表,如用户画像、实时日志。 - **案例**: - **社交平台在线消息存储**: - 用户发送的聊天消息按 `RowKey=用户ID_时间戳` 写入 HBase。 - 查询时通过 `RowKey` 快速获取某个用户最近 100 条消息。 --- ### **4. Spark** - **定位**:基于内存计算的通用分布式计算引擎。 - **核心功能**: - 支持批处理、流处理(微批模式)、机器学习(MLlib)、图计算(GraphX)。 - 比 MapReduce10~100 倍(内存缓存中间结果)。 - **特点**: - 适合迭代计算(如机器学习训练)、交互式查询。 - **案例**: - **实时推荐系统**: - 用 Spark Streaming 每 5 分钟读取 Kafka 中的用户点击流数据。 - 结合历史 HDFS 数据,通过协同过滤算法更新推荐列表。 --- ### **5. Flink** - **定位**:以流计算为核心的分布式处理框架。 - **核心功能**: - 支持真正的流处理(逐事件处理)与批处理(视为有界流)。 - 提供精确一次(Exactly-Once)语义和低延迟(毫秒级)。 - **特点**: - 适合复杂事件处理(如金融风控)、实时 ETL。 - **案例**: - **信用卡实时反欺诈**: - 通过 Flink 持续监控交易流,若同一用户 10 秒内在不同城市连续消费 3 次,立即触发告警。 --- ### **对比总结** | 工具 | 核心场景 | 延迟 | 典型应用 | 编程模型 | |----------|-------------------------|------------|-----------------------------------|-----------------| | Hadoop | 离线批处理 | 小时级 | 历史日志清洗 | MapReduce | | Hive | 离线 SQL 分析 | 分钟级 | 生成周报/月报 | SQL | | HBase | 实时读写 | 毫秒级 | 在线查询用户画像 | NoSQL API | | Spark | 批处理/微批流/机器学习 | 秒级~分钟 | 机器学习训练、交互式分析 | RDD/DataFrame | | Flink | 实时流处理 | 毫秒级 | 实时监控、CEP(复杂事件处理) | DataStream API | --- ### **技术选型参考** - **离线报表**:Hive(SQL 开发快) + Hadoop(存储)。 - **实时风控**:Flink(低延迟流处理) + Kafka(数据管道)。 - **用户画像查询**:HBase(快速读取) + Spark(特征计算)。 - **数据湖分析**:HDFS(存储原始数据) + Spark(高效处理)。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值