Spark Streaming+Kafka+Hbase项目实战

同学们在学习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

欢迎阅读、订阅、转载、收藏

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181120G0DLH200?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券