第15课:Spark Streaming源码解读之No Receivers彻底思考
本期内容: 1,Direct Access 2,Kafka 使用No Receiver有更强的控制度和语义一致性。接下来我们以Kafka为例,讲解不使用Receiver而直接从Kafka的Broker上读取数据,这种方式成为Direct方式。 从Spark Streaming-Kafka包中主要有10个类,我们先讲解KafkaRDD这个类,KafkaRDD继承RDD,其构造器中需要传入Kafka的配置信息(如Kafka的Broker集合),偏移量信息,每个Topic的Partition的Leader信息,消息处理函数。 我们知道自定义RDD,需要实现RDD的抽象方法,那KafkaRDD是如何实现的呢? ** * :: DeveloperApi :: * Implemented by subclasses to compute a given partition. */ @DeveloperApi def compute(split: Partition, context: TaskContext): Iterator[T] /** * Implemented by subclasses to return the set of partitions in this RDD. This method will only * be called once, so it is safe