开发者学堂课程【大数据Spark2020版(知识精讲与实战演练)第五阶段:Structred_Source_Kafka_需求】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/692/detail/12153
Structred_Source_Kafka_需求
内容介绍
一.目标
二.步骤
一.目标
通过本章节的学习,可以掌握一个常见的需求,并且了解后面案例的编写步骤
二.步骤
1.需求
模拟一个智能物联网系统数据统计
有一个智能家居品牌叫做 Nest, 他们主要有两次产品,一个是恒温器,一个是摄像头。
恒温器的主要作用是通过感应器识别家里什么时候有人,摄像头主要作用是通过学习算法来识别出现在摄像头中的人是否是家里人,如果不是则报警
所以这两个设备都需要统计一个指标,就是家里什么时候有人,此需求就是针对这个设备的部分数据,来统计家里什么时候有人。
摄像头存在 ai 算法,摄像头内消息传递到 Kafka,使用 Spark 处理消息。
2. 使用生产者在 Kafka 的 Topic:steaming-test 中输入 JSON 数据
传到 kafka,在 kafka 内处理并解析,统计。
{
“devices":{
" cameras":{
"device_id:“awJo6rH"
"last_event{
"has_sound”:true,
"has_motion" :true ,
"has_person”:true,
"start_time":“2016-12—29T00: 00: 00.000Z "
"end_time":2016-12-29718:42 :00.000Z"
}
}
}
此格式为 json 格式·
3.使用 Structured Streaming 来过滤出来家里有人的数据
把数据转换为时间-->是否有人这样类似的形式
4.数据转换
追踪 json 数据的格式。
可以在一个在线的工具 https://jsonformatter.org/ 中格式化 JSON,公发现 JSON 格式如下
object (1)
devices (1)
careras (2)
Device_id : anjo6rm
Last_event (5)
Has_sound :true
has_ Rotion :true
Has_person:true
Start_time:2016-12-7910010000.0002
End_time:2016-122911842:00.002
将 json 放入网站中进行格式化,多行变单行。否则放入卡夫卡中是多行消息。
5.反序列化
JSON 数据本顺上就是字符串,只不过这个字符串是有结构的,虽然有结构,但是很难直接从字符串中取出某个值而反字列化,就是指把 JSON 数据转为对象,或省转为 DataFrame,可以直接使用某.一个列或者某个字段获取数据, 更加方便
而想要做到这件事,必须要先根据数据格式,编号 Schema 对象,从而通过些方式转为 DataFrame
6.总结
1.业务简单米说,就是收集智能家居设备的数据,通过流计算的方式计算其特征规律
2.Kafka 常见的业务场景就是对接业务系统和数据系统
业务系统经常会使用 JSON 作为数据传输格式
所以使用 Structured Streaming 来对按 Kafka 并反序列化 Kafka 中的 JSON 格式的消息,是一个 非常重要的技能
3.无论使用什么方式,如果想反序列化 JSON 数据,就必须要先追踪 JSON 数据的结构。
数据从设备出发,放到卡夫卡,使用 Spark 处理消息,统计时间点,观看时间点家里是否有人。