三十六、《大数据项目实战之用户行为分析》Spark Streaming整合Kafka计算实时单词数量

整合原理

Kafka在0.8和0.10版本之间引入了一个新的消费者API,Spark针对这两个版本有两个单独对应的Spark Streaming包可用,分别为spark-streaming-kafka-0-8和spark-streaming-kafka-0-10。需要注意的是,前者兼容Kafka 0.8、0.9、0.10,后者只兼容Kafka 0.10及之后的版本。而从Spark 2.3.0开始,对Kafka 0.8的支持就被弃用了,因此本书使用spark-streaming-kafka-0-10包进行讲解,使用的Kafka版本为3.1.0。

从Spark 1.3开始引入了一种新的无Receiver的直连(Direct)方法,以确保更强的端到端保证。这种方法不使用Receiver来接收数据,而是定期查询Kafka在每个主题和分区中的最新偏移量(Offset),并相应地定义在每个批处理中要处理的偏移量范围。启动处理数据的作业时,Kafka的简单消费者API用于从Kafka读取已定义的偏移量范围数据(类似于从文件系统读取文件)。这种方法的作业流程如图

三十六、《大数据项目实战之用户行为分析》Spark Streaming整合Kafka计算实时单词数量_第1张图片

与基于Receiver的方法相比,此方法具有以下优点:

  1. 简化并行性:不需要创建多个输入Kafka流进行合并。Spark

你可能感兴趣的:(#,kafka,大数据,spark,SparkStreaming)