Spark Streaming with Kafka integration
- 在这里我们开始介绍如何配置spark Streaming去接受来自kafka的数据,有两个方法能够做到:
- 1.老方法,使用的是Receivers和kafka的高级API
- 2.新方法,取消了使用Receivers
- 他们拥有不同的编程模型,代表特征和保证语义,所以,阅读来获得更多的细节,两个方法都是被考虑经过现在spark版本的稳定API实现的
Approach 1:Receiver-based Approach(基于接收器的方法)
- 这个方法是使用一个接收器来接受数据,这个接收器是使用kafka高级API的工具,对于所有的接收器来说,kafka的数据接受是通过一个数据接收器,此接收器是存在于spark Executor中的,之后的任务启动是通过spark Streaming来处理数据。
- 然而在默认的配置下,此方法有可能会发生错误从而丢失数据(详情请看Receiver reliability),为确保数据不丢失,不得不另外添加一个Write-Ahead Log(WAL)在spark Streaming中,kafka中所有接收到的数据会同步存储在WAL分布式文件系统HDFS上 ,所以,数据发生错误的时候可被恢复
- 该方式如何设置在流式应用中:
import org.apach