Spark Streaming Kafka

本文详细介绍了Spark Streaming从Kafka获取数据的两种模式——基于Receiver和Direct模式。Receiver模式下,数据可能丢失,需启用WAL实现高可靠性。Direct模式避免了额外的数据复制,提供更优的性能和一次且仅一次的事务机制,降低了资源和内存需求,鲁棒性更强。文章还讲解了KafkaUtils.createStream的使用流程,并提供了基于Java的Spark Streaming与Kafka连接的代码框架。
摘要由CSDN通过智能技术生成

Spark Streaming 可以⽀持多种数据源,但目前最常用的还是 Kafka 作为数据源。

Spark Streamingkafka编程主要包括两种模型

1.基于Receiver模式

2.Direct(无Receiver)模式

 

基于Receiver spark-streaming-kafka-0-10以上已不支持)

这种方式利用接收器(Receiver)来接收kafka中的数据,其最基本是使用Kafka高阶用户API接口。对于所有的接收器,从kafka接收来的数据会存储在sparkexecutor中,之后spark streaming提交的job会处理这些数据。

然而,在默认的配置下,这种方式可能会因为底层的失败而丢失数据。如果要启用高可靠机制,让数据零丢失,就必须启用Spark Streaming的预写日志机制(Write Ahead LogWAL)。该机制会同步地将接收到的Kafka数据写入分布式文件系统(比如HDFS)上的预写日志中。所以,即使底层节点出现了失败,也可以使用预写日志中的数据进行恢复。

需要注意的要点:

1Kafka中的topicpartition,与Spark中的RDDpartition是没有关系的。所以,在KafkaUtils.createStream()中,提高partition的数量,只会增加一个Receiver中读取partition的线程的数量。不会增加Spark处理数据的并行度。

2、可以创建多个Kafka输入DStream,使用不同的consumer group

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值