同学们在学习Spark Steaming的过程中,可能缺乏一个练手的项目,这次通过一个有实际背景的小项目,把学过的Spark Steaming、Hbase、Kafka都串起来。
1. 项目介绍
1.1 项目流程
Spark Streaming读取kafka数据源发来的json格式的数据流,在批次内完成数据的清洗和过滤,再从HBase读取补充数据,拼接成新的json字符串写进下游kafka。
1.2 项目详解
2. 环境准备
2.1 组件安装
首先需要安装必要的大数据组件,安装的版本信息如下:
Spark 2.1.2
kafka 0.10.0.1
HBase 1.2.0
Zookeeper 3.4.5
2.2 Hbase Table的创建
Hbase创建table student,列族名为cf,并存入两条数据
2.3 Kafka Topic的创建
创建kafka的两个topic,分别是kafka_streaming_topic、hello_topic。
3. Code
3.1 项目结构
简单解释一下:
Output、Score、Output三个是Java Bean
MsgHandler完成对数据流的操作,包括json格式判断、必备字段检查、成绩>=60筛选、json to Bean、合并Bean等操作
ConfigManager读取配置参数
conf.properties 配置信息
StreamingDemo是程序主函数
HBaseUtils Hbase工具类
StreamingDemoTest 测试类
3.2 主函数
初始化spark,和一些配置信息的读取,通过KafkaUtils.createDirectStream读取kafka数据。
接下来完成如下几个操作:
清洗和筛选数据,返回(id,ScoreBean)的RDD
构造id List集合,批量从Hbase查询结果,构造(id,studentJsonStr)的resMap集合,方便后续O(1)查询
遍历每条数据,从resMap查到结果,合并出新的Java Bean
Java Bean to Json String,并写入到kafka
4. 结果
开启kafka producer shell, 向kafka_streaming_topic写数据
开启kafka consumer shell, 消费hello_topic
5. 总结
通过这个小项目,希望大家可以掌握基本的Spark Streaming流处理操作,包括读写kafka,查询hbase,spark streaming Dstream操作。篇幅有限,全部代码就不一一列出了,完整代码在
GitHub上 https://github.com/tygxy/StreamingDemo
欢迎阅读、订阅、转载、收藏
领取专属 10元无门槛券
私享最新 技术干货