Spark 实时电商数据分析及可视化
Spark 实时电商数据分析可视化系统是一个经典的大数据应用项目,技术栈主要有 Flume、Kafka、Spark Streaming、Flask 等,帮助大家了解和运用一些当前热门的大数据处理组件来亲自动手搭建一套大数据处理平台框架和熟悉大数据项目的基础开发流程。
数据采集与传输
实验介绍
本实验将带领大家通过实验楼平台所提供的线上环境实现项目前期的数据采集与传输模块,以此对 Flume 和 Kafka 这两个组件在项目中的应用有一定的了解。
知识点
- Flume 和 Kafka 基本操作命令
- Kafka 中 Topic 的创建
- Flume 作为 Kafka 数据源的配置
- Zookeeper、Kafka、Flume 整合使用
- Flume 与 Kafka 整合的优点
- 数据消费
技术介绍及其在项目中的运用
Zookeeper 简介
为分布式应用提供支持的一种协调分布式服务,项目中主要用于管理 Kafka。除此之外还可提供统一配置管理、域名集中访问、分布式锁和集群管理等服务。
Flume 简介
一种日志采集系统,具备高可用、高可靠和分布式等优点,可定制各类数据发送方,用于数据的收集;传输过程中,可对数据进行简单处理,并可定制数据接收方,具备事务性,只有当数据被消费之后才会被移除,项目中接收方定制为 Kafka。
在使用 Flume 的时候,可编写自定义的过滤器进行初次的数据清洗,减少后期 ETL 的压力,但是此项目用的数据集较为简单,仅需后期简单清洗即可,如果对这方面感兴趣的同学们可以去自行学习后,将过滤器加进此项目中测试。
Kafka 简介
一种高性能分布式消息队列系统组件,具有数据持久化、多副本备份、横向扩展和处理数据量大等特点。Kafka 需要部署于 Zookeeper 同步服务上,用于实时流式数据分析。项目中用作存放 Flume 采集的数据。Kafka 中也存在拦截器机制,可对传入的消息进行拦截和修改。
Flume 与 Kafka 结合使用的好处
- 实际项目开发中,由于数据源的多样性和数据的复杂性,如采用构建多个 Kafka 生产者、通过文件流的方式向主题写入数据再供消费者消费的话,很不方便。
- 进行实时数据处理时,由于 Flume 的数据采集速度过快,数据处理过慢时,可能会发生数据的堆积或者丢失,此时可把 Kafka 当做一个消息缓存队列,用于存放一段时间的数据。
- Kafka 属于中间件,可降低项目耦合性,使某模块出错时不会干扰其它组件。
源数据
源数据为用户行为日志数据集中截取的 10w 条记录,日志字段定义如下表所示:
字段名 | 说明 |
---|---|
userId | 用户 id |
goodsId | 商品 id |
catId | 商品类别 id |
sellerId | 卖家 id |
brandId | 品牌 id |
month | 交易月份 |
date | 交易日期 |
action | 用户操作行为: |
ageLevel | 客户年龄段: |
gender | 性别: |
province | 省份 |
下载 test.csv
测试数据,考虑到运行环境内存,数据量不是很大,如果使用自己机器进行实现,可以去网络上找一份比较大数据量的数据集。
cd /home/shiyanlou/Desktop
# 测试数据拉取
wget https://labfile.oss.aliyuncs.com/courses/2629/test.csv
数据具体格式如下图所示,字段排列顺序按上表。
预期成果
结合提供的 Spark 开发环境,开启 Flume 采集端后,Kafka 的控制台消费者能够不断的消费 Topic 中的数据,在命令窗口中进行显示。
以上内容来自课程《Spark 实时电商数据分析及可视化》,通过课程可以学到:
点击链接,可学习完整课程哦!前二章免费试学!