Spark 2.2和2.3支持0.8和0.10两种Kafka API,而且0.8版本的API可以和Kafka Broker 0.9 及0.10兼容,但0.10版本的API不能与Kakka 0.8兼容。两个版本Kafka API的功能对比如下:
由此可知,相对于0.8版本,Kafka API 0.10版本的主要变化在于:
1)只支持Direct DStream 的连接模式,基于Receiver的⽅式Kafka连接⽅式不再⽀持(但Spark Streaming Receiver仍然⽀持)。
2)支持Offset Commit API,因而不再需要完全通过手工编写代码的方式来进行 Offset 管理。
3)暂不支持 Python。
另外,CDH Spark2 中支持 Kafka 0.9 和 0.10 两个版本。在 CDH 中调用Kafka,需要在 CM手工指定 Kafka 的版本,如下图所示。
注:接下来的例子都是使用spark-kafka010的版本,且使用的java,如果要查看scala如何实现,请查看参考链接。
创建一个Direct Stream
import java.util.*;
import org.apache.spark.SparkConf;
import org.apache.spark.TaskContext;
import org.apache.spark.api.java.*;
import org.apache.spark.api.java.function.*;
import org.apache.spark.streaming.