更新时间:2021-12-17 来源:黑马程序员 浏览量:
Spark Streaming支持从多种数据源获取数据,其中就包括 Kafka,要想从 数据源获取数据,首先要建立两者之间的连接,本节来介绍两种连接Kafka的方式。
(1)KafkaUtils.createDstream基于接收器方式,消费Kafka数据已淘汰企业中不再使用;
(2)Receiver作为常驻的Task运行在Executor等待数据,但是一个Receiver效率低,需要开启多个,再手动合并数据(union),再进行处理,很麻烦;
(3)Receiver那台机器挂了,可能会丢失数据,所以需要开启WAL(预写日志)保证数据安全,那么效率又会降低;
(4)Receiver方式是通过zookeeper来连接kafka队列,调用Kafka高阶API,offset存储在zookeeper,由Receiver维护
(5)Spark在消费的时候为了保证数据不丢也会在Checkpoint中存一份offset,可能会出现数据不一致;
(1)KafkaUtils.createDirectStream直连方式,Streaming中每批次的每个job直接调用Simple Consumer API获取对应Topic数据,此种方式使用最多,面试时被问的最多;
(2)Direct方式是直接连接kafka分区来获取数据,从每个分区直接读取数据大大提高并行能力
(3)Direct方式调用Kafka低阶API(底层APl),offset自己存储和维护,默认由Spark维护在checkpoint中,消除了与zk不一致的情况
(4)当然也可以自己手动维护,把offset存在MySQL/Redis中;
Spark Streaming与Kafka集成,有两套API,原因在于Kafka Consumer API有两套,文档:
http://spatkapathe.org/docs/2.4.5/streaming-kafka-integration.html
http://spark apache.org/docs/latest/streaming-kafka-integration.html
Kafka0.8.x版本-早已淘汰
底层使用老的KafkaAPI:Old Kafika Consumer API
支持Receiver(已淘达)和Direct模式:
Kafka 0.10.x版本-开发中使用
底层使用新的KafkaAPI:New Kafka Consumer API
只支持Direct模式
【AI设计】北京143期毕业仅36天,全员拿下高薪offer!黑马AI设计连续6期100%高薪就业
2025-09-19【跨境电商运营】深圳跨境电商运营毕业22个工作日,就业率91%+,最高薪资达13500元
2025-09-19【AI运维】郑州运维1期就业班,毕业14个工作日,班级93%同学已拿到Offer, 一线均薪资 1W+
2025-09-19【AI鸿蒙开发】上海校区AI鸿蒙开发4期5期,距离毕业21天,就业率91%,平均薪资14046元
2025-09-19【AI大模型开发-Python】毕业33个工作日,就业率已达到94.55%,班均薪资20763元
2025-09-19【AI智能应用开发-Java】毕业5个工作日就业率98.18%,最高薪资 17.5k*13薪,全班平均薪资9244元
2025-09-19