- 1、两种方式特点以及优缺点讲解
- 2、Spark Streaming 整合kafka的两种方式代码展示
7.1、Receiver Approach
Receiver是使用Kafka的high level的consumer API来实现的。Receiver从Kafka中获取数据都是存储在Spark Executor内存中的,然后Spark Streaming启动的job会去处理那些数据
然而这种方式很可能会丢失数据,如果要启用高可靠机制,让数据零丢失,就必须启动Spark Streaming预写日志机制(WAL,Write Ahead Log)。该机制会同步地接收到Kafka数据写入分布式文件系统,比如HDFS上的预写日志中。所有底层节点出现了失败,也可以使用预写日志的数据进行恢复。
saprk streaming + kafka整合(Receiver -based Approach)博文链接:
代码实现:
https://blog.youkuaiyun.com/murphyZ/article/details/88238878
7.2、Direct Approach (No Receiver)
它会周期性的查询kafka,来获取每个topic + partition的最新offset,从而定义每一个batch的offset的范围。当处理数据的job启动时,就会使用kafka简单的消费者API来获取kafka指定offset的范围的数据。
1)、它