Streaming消费Kafka数据的两种方式

本文介绍了Streaming消费Kafka数据的两种方式。Receiver模式使用Kafka高级API,自动维护偏移量,但效率低、易丢数据,可通过WAL本地存储保证数据不丢;Direct直连方式用Kafka底层API,需自己维护偏移量,即用即取即丢,效率高,能实现零数据丢失且不重复消费。

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

1.receiver模式
Receiver接收固定时间间隔的数据,放在Spark executors内存中操作,使用kafka高级API,自动维护偏移量,达到固定时间才能进行处理,效率低下,并且容易丢失数据。
数据备份两次,保存到hdfs,每次使用须从hdfs读取,导致效率低下。
如果数据量特别大的情况下,容量不够就会造成数据丢失。receiver通过WAL,设置本地存储,会存放到本地,保证数据不丢失。
2.Direct直连方式
直连方式就是使用executor直接连接kakfa节点,自定义偏移量的使用大小及存储备份方法。使用Kafka底层API,需要自己维护偏移量,迭代计算,即用即取即丢,不会给内存造成太大压力,效率高。
从Kafka集群中读取数据,并且在Spark Streaming系统里面维护偏移量相关的信息,实现零数据丢失,保证不重复消费。
创建的DStream的RDD的partition做到了和Kafka中topic的partition一一对应

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值