1. 项目背景与核心目标
作为一名长期从事大数据分析的工程师,我经常遇到需要处理海量交通数据的场景。这次分享的毕业设计项目,源于一个真实的地铁客流分析需求——通过大数据技术手段,从数百万条地铁刷卡记录中挖掘出有价值的运营洞察。
这个系统的核心价值在于:将原始的、杂乱的地铁刷卡数据转化为直观的、可操作的业务知识。比如哪些站点在早高峰压力最大?不同线路的客流构成有什么特点?票价收入与客流量是否成正比?这些问题的答案直接影响着地铁运营方的排班调度、设备维护和商业决策。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术选型与架构设计
2.1 技术栈组成
整个系统采用Lambda架构设计,兼顾批处理和实时计算:
- 数据采集层:原始CSV格式的地铁刷卡数据(781,472条记录)
- 批处理层:
- Flink 1.13.2(数据清洗与聚合)
- Elasticsearch 7.10(数据存储)
- Kibana 7.10(可视化)
- 实时计算层:
- Flink(实时窗口计算)
- HBase 2.3(实时结果存储)
- 辅助工具:
- Hadoop 3.2.2(分布式存储)
- Zookeeper 3.6.3(集群协调)
选择Flink而非Spark Streaming的原因:Flink的Exactly-Once语义和低延迟特性更适合实时客流统计场景,其事件时间处理机制能有效应对数据乱序问题。
2.2 数据流程设计

- 数据接入:原始CSV文件通过Flink FileSource接入
- 数据清洗:
- 过滤无效记录(单边交易、同站进出等)
- 补全完整乘车记录(匹配进站与出站)
- 批处理分析:
- 按线路/站点/时段的聚合计算
- 结果写入Elasticsearch
- 实时计算:
- 5分钟滚动窗口统计
- 结果写入HBase
- 可视化:通过Kibana展示分析结果
