Spark获取Kafka数据的两种方式(源码)

本文介绍了SparkStreaming从Kafka获取数据的两种方式——DirectKafkaInputDStream(直接方式)和ReceiverInputDStream(接收器方式)。Direct方式仅在执行时拉取数据,而Receiver方式实时获取并存储。ReceiverInputDStream通过Excutor的多线程获取Kafka数据,而DirectKafkaInputDStream不存储数据,仅在需要时读取,利用KafkaRDD进行并行处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

个人GitHub地址 :https://github.com/LinMingQiang

在sparkstreaming接受数据的时候有两种方式

(1)DirectKafkaInputDStream 使用的是 Direct 方式获取数据;DirectKafkaInputDStream 继承自 InputDStream
(2)SocketInputDStream 使用的是 Receiver-based 方式获取数据;SocketInputDStream 继承自ReceiverInputDStream

这两种方式的区别:

Direct是去数据源拉取数据,只有在真正执行的时候才去获取数据
Receiver是把数据取来存储,是实时都在获取数据并储存

ReceiverInputDStream

1:将receive分给单个excutor,在excutor启动多线程(同kafka的partiton个数)来获取kafka的数据。
2:receive一直在获取kafka数据,并存在block上,等spark job去获取执行。然后更新offset。

DirectKafkaInputDStream

获取kafka数据

由于DirectKafkaInputDStream 不是继承自ReceiverInputDStream。所以不需要有Receiver,所以也就没有获取数据,不需要将数据存在内存block里面,也就没有block信息等等

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值