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 集成

Spark Streaming 基于 Direct API 优化与 Kafka 集成

Spark Direct Stream 不会为每个 kafka 分区创建并行流