KafkaSpark-Streaming

[复制链接]
发表于 2025-9-22 07:21:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
kafka与其他组件的整合

Kafka 生产者 天生数据并收罗
使用kafka作为消耗者从bloom中获取数据,并将数据打印到控制台或传入HDFS。
Kafka 消耗者 获取数据
Kafka 有两种分配计谋,一是 RoundRobin(轮询),一是 Range。
Range是Kafka默认的分区分配计谋。它是面向主题分配的。将分区按照几等份分配给一个消耗组内订阅了该主题的消耗者。缺点是会导致消耗者消耗数据的不匀称。
当消耗者的个数发生变化的时间就会触发分区分配计谋。
ACKS机制
对于某些不太紧张的数据,对数据的可靠性要求不是很高,能够容忍数据的少量丢失,
以是没须要等 ISR 中的 follower 全部吸劳绩功。以是 Kafka 为用户提供了三种可靠性级别,用户根据对可靠性和延迟的要求举行权衡,选择以下的配置。
acks 参数配置:
0:producer 不等待 broker 的 ack,这一操作提供了一个最低的延迟,broker 一吸收到还没有写入磁盘就已经返回,当 broker 故障时有可能丢失数据;
1:producer 等待 broker 的 ack,partition 的 leader 落盘乐成后返回 ack,如果在 follower同步乐成之前 leader 故障,那么将会丢失数据;
-1(all):producer 等待 broker 的 ack,partition 的 leader 和 follower 全部落盘乐成后才返回 ack。但是如果在 follower 同步完成后,broker 发送 ack 之前,leader 发生故障,那么会造成数据重复。
Spark-Streaming

无状态转化操作

无状态转化操作就是把简单的 RDD 转化操作应用到每个批次上,也就是转化 DStream 中的每一个 RDD。部门无状态转化操作列在了下表中。
留意,针对键值对的 DStream 转化操作(好比reduceByKey())要添加import StreamingContext._才能在 Scala 中使用。

必要记住的是,只管这些函数看起来像作用在整个流上一样,但毕竟上每个 DStream 在内部是由很多 RDD(批次)组成,且无状态转化操作是分别应用到每个 RDD 上的。
Transform

Transform 答应 DStream 上实行恣意的 RDD-to-RDD 函数。即使这些函数并没有在 DStream的 API 中袒露出来,通过该函数可以方便的扩展 Spark API。该函数每一批次调治一次。着实也就是对 DStream 中的 RDD 应用转换。


join

两个流之间的 join 必要两个流的批次巨细划一,如许才能做到同时触发计算。计算过程就是对当前批次的两个流中各自的 RDD 举行 join,与两个 RDD 的 join 结果雷同。


回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表