博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spark从kafka中读取数据,Direct Approach相较于Receiver-based Approach方式的区别
阅读量:3908 次
发布时间:2019-05-23

本文共 504 字,大约阅读时间需要 1 分钟。

1、简化的并行:

在Receiver的方式中我们提到创建多个Receiver之后利用union来合并成一个Dstream的方式提高数据传输并行度。而在Direct方式中,Kafka中的partition与RDD中的partition是一一对应的并行读取Kafka数据,这种映射关系也更利于理解和优化。

2、高效:

在Receiver的方式中,为了达到0数据丢失需要将数据存入Write Ahead Log中,这样在Kafka和日志中就保存了两份数据,浪费!而第一种方式不存在这个问题,只要我们Kafka的数据保留时间足够长,我们都能够从Kafka进行数据恢复。

3、精确一次:

在Receiver的方式中,使用的是Kafka的高阶API接口从Zookeeper中获取offset值,这也是传统的从Kafka中读取数据的方式,但由于Spark Streaming消费的数据和Zookeeper中记录的offset不同步,这种方式偶尔会造成数据重复消费。而第一种方式,直接使用了简单的低阶Kafka API,Offsets则利用Spark Streaming的checkpoints进行记录,消除了这种不一致性。

转载地址:http://tqqen.baihongyu.com/

你可能感兴趣的文章
Nio
查看>>
如何成为一个编程高手
查看>>
ant入门配置1
查看>>
jquery调优
查看>>
jquery调优2
查看>>
jQuery 自定义函数写法分享
查看>>
jQuery插件的开发
查看>>
jQuery1.7.1 API手册
查看>>
JQuery常用函数及功能小结
查看>>
以前项目中的一些js写法
查看>>
以前项目中的js写法2
查看>>
以前项目中js写法3
查看>>
以前写的jsp页面内容
查看>>
以前写的jsp页面
查看>>
以前的代码1
查看>>
以前写的struts配置文件
查看>>
apache common简介1
查看>>
apache common 工具(怎样可以编写更少的代码)
查看>>
用maven构建项目
查看>>
Spring集成ActiveMQ配置
查看>>