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一一对应
Streaming消费Kafka数据的两种方式
最新推荐文章于 2025-06-18 21:03:50 发布