Spark大数据分与实践笔记(第七章 Spark Streaming实时计算框架-03)

本文详细介绍了Spark Streaming整合Kafka的两种方式:KafkaUtils.createDstream和KafkaUtils.createDirectStream。针对每种方式,文章讨论了数据处理的流程、依赖导入、Scala类创建、Kafka主题创建以及消息生产者启动。特别指出,createDstream方式可能处理数据多次,而createDirectStream方式虽然避免了该问题,但需注意通过Checkpoint保存偏移量以防止数据丢失。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第七章 Spark Streaming实时计算框架

7.4 Spark Streaming整合Kafka实战

Kafka作为一个实时的分布式消息队列,实时地生产和消费消息。在这里,我们可以利用Spark Streaming实时地读取Kafka中的数据,然后再进行相关计算。在Spark.[.3版本后, KafkaUtils里面提供 了两个创建DStream的方式,一种是KafkaUtils.createDstream方式,另-种为KafkaUtils.createDirectStream方式。 本节,我们针对DStream的这两种方式进行详细介绍。

7.4.1 KafkaUtils.createDstream方式

KafkaUtils.createDstream方式(即基于Receiver的方式),主要是通过Zookeeper连接Kafka, receivers接收器从Kafka中获取数据,并且所有receivers获取到的数据都会保存在Spark executors中,然后通过Spark Streaming启动job来处理这些数据,具体处理流程如图所示。
在这里插入图片描述

在图中,当Driver处理Spark Executors中的job时,默认是会出现数据丢失的情况,此时,如果我们启用WAL日志将接收到数据同步地保存到分布式文件系统上(如HDFS) ,当数据由于某种原因丢失时,丢失的数据能够及时恢复。
接下来,通过一个具体的案例来演示如何使用KafkaUtils.createDstream实现词频统计,具体实现步骤如下:

7.4.1.1 导入依赖

我们需要在pom.xm文件中添加Spark Streaming整合Kafka的依赖。具体内容如下:

<!--引入sparkstreaming整合kafka的依赖-->
<dependency>
	<groupId>org.apache.spark</groupId>
	<artifactId>spark-streaming-kafka-0-8_2.11</artifactId>
	<version>2.0.2</version>
</dependency>
7.4.1.2 创建Scala类, 实现词频统计

在spark_ chapter07项目的/src/main/scala/cn.itcast.dstream目录下, 创建一个名
为"SparkStreaming Kafka_ _createDstream”的Scala类,用来编写Spark Streaming应用程序实现词频统计。具体实现代码如文件所示。
文件7-7 SparkStreaming_Kafka_createDstream.scala

package cn.itcast.dstream

import org.apache.spark.streaming.dstream.{
   DStream, ReceiverInputDStream}
import org.apache.spark.streaming.kafka.KafkaUtils
import org.apache.spark.streaming.{
   Seconds, StreamingContext}
import org.apache.spark.{
   SparkConf, SparkContext}
import scala.collection.immutable

object SparkStreaming_Kafka_createDstream {
   
    def main(args: Array[String]): Unit = {
   
        //1.创建sparkConf,并开启wal预写日志,保存数据源
        val sparkConf: SparkConf =
                 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

妉妉师姐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值