开发者学堂课程【大数据Spark2020版(知识精讲与实战演练)第五阶段:Structured_Source_Kafka_整合】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/692/detail/12152
Structured_Source_Kafka_整合
内容介绍
一、Kafka 和 Structured Streaming 整合的结构
二、总结
一、Kafka 和 Structured Streaming 整合的结构
1.目标和步骤
(1)目标
通过本小节可以理解 Kafka 和 Structured Streaming 整合的结构原理,同时还能理解 Spark 连接Kafka 的时候一个非常重要的参数
(2)步骤
① Topic 的 offset
② Kafka 和 Structured Streaming 的整合结构
③ Structured Streaming 读取 Kafka 消息的三种方式
2. Topic 的 offset
Topic 是分区的,每一个 Topic 的分区分布在不同的 Broker 上
Producer 是消息的生成者,consumer 消息的消费者,中间 Kafka Cluster 为 Kafka 的集群,集群中有多个 Kafka 的节点 broker ,逻辑上的 Topic 分别分布在每一个节点上。物理节点是 broker ,topic 是逻辑概念。
每个分区都对应一系列的 Log 文件,消息存在于 Log 中,消息的 ID 就是这条消息在本分区的 Offset 偏移量
offset 又称作为偏移量,其实就是一个东西距离另外一个东西的距离
Kafka 中使用 Offset 命名消息,而不是指定 ID 的原因是想表示永远自增,ID 是可以指定的,但是 Offset 只能是一个距离值,它只会越来越大,所以,叫做 Offset 而不 ID也是这个考虑,消息只能追加到 Log 末尾,只能增长不能减少
3.Kafka 和 Structured streaming 整合的结构
(1)分析
Structured Streaming中使用 Source 对接外部系统,对接 Kafka Source 叫做 KafkaSource KafkaSource 中会使用KafkaSourceRDD 来映射外部 Kafka 的 Topic ,两者的 Partition一一对应
(2)结论
Structured Streaming 会并行的从 Kafka 中获取数据
4. structured Streaming 读取 Kafka 消息的三种方式
(1) Earliest 从每个 Kafka 分区最开始处开始获取
(2) Assign 手动指定每个 Kafka 分区中的Offset
(3) Latest 不再处理之前的消息,只获取流计算启动后新产生的数据
二、总结
1. Kafka 中的消息存放在某个 Topic 的某个 Partition 中,消息是不可变的,只会在消息过期的时候从最早的消息开始删除,消息的 ID 也叫做 Offset, 并且只能正增长
2. Structured Streaming 整合 Kafka 的时候,会并行的通过 Offset 从所有 Topic 的 Partition 中获取数据
3. Structured Streaming 在从、Kafka 读取数据的时候,可以选择从最早的地方开始读取,也可以选择从任意位置读取,也可以选择只读取最新的