streaming kafka direct 详解
Posted sunrye
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了streaming kafka direct 详解相关的知识,希望对你有一定的参考价值。
http://blog.cloudera.com/blog/2015/03/exactly-once-spark-streaming-from-apache-kafka/ streaming通过direct接收数据的入口是createDirectStream,调用该方法的时候会先创建
val kc = new KafkaCluster(kafkaParams)
这个类会获取kafka的partition信息,并创建DirectKafkaInputStream类,每个类都对应一个topic,通过foreachRDD可以获取每个partition的offset等信息。到了batch time后,这个类的compute方法就会被调用(这块可以参考spark streaming文件夹下的文章),接着就是:
1. 获取kafka partition的untilOffset,这样就确定了获取数据的区间
2. 构建一个kafkaRDD实例。
3. 将offset信息报给InputInfoTracker
4. 返回该RDD
kafkaRDD和一般的RDD一样,整个过程都是lazy的,数据都是放在kafka中,只有真正action的时候才会从kafka拉取数据。
以上是关于streaming kafka direct 详解的主要内容,如果未能解决你的问题,请参考以下文章
Spark Kafka 基于Direct自己管理offset
Java网络编程和NIO详解8:浅析mmap和Direct Buffer
pySpark Kafka Direct Streaming 更新 Zookeeper / Kafka Offset
Spark Streaming 基于 Direct API 优化与 Kafka 集成