从Kafka读取数据

用Spark-Streaming从Kafka读取数据

  • 在大数据处理领域,Spark-Streaming和Kafka都是明星技术。今天咱们就来聊聊怎么用Spark-Streaming从Kafka读取数据并做处理,就算你是小白,也保证能看懂!
  • 先讲讲从Kafka获取数据的两种方式。早期有个ReceiverAPI,它需要专门的Executor接收数据,再发给其他Executor计算。想象一下,接收数据的人速度特别快,计算的人跟不上,数据就堆在计算的节点上,最后内存都被占满,这就是 ReceiverAPI 的问题,所以现在它不太常用了。
  • 后来出现了DirectAPI,它让计算的Executor自己主动去Kafka拿数据,速度自己能掌控,就像你自己去超市拿东西,想要多少、什么时候拿都自己决定,是不是方便多了?现在主流用的就是DirectAPI这种方式。
  • 下面进入实操环节。假设我们要通过SparkStreaming从Kafka读取数据,简单计算后打印到控制台。
  • 第一步,得在项目里导入依赖。就像搭积木,得先把要用的积木都准备好。在项目的配置文件里加上这段代码:
  • <dependency>
  • <groupId>org.apache.spark</groupId>
  • <artifactId>spark-streaming-kafka-0-10_2.12</artifactId>
  • <version>3.0.0</version>
  • </dependency>
  • 这就把和Kafka交互的"工具"准备好了
  • 第二步,开始写代码。在代码里,先创建一个Spark配置,告诉程序要在哪里运行,叫什么名字,就像给它安排好"工作地点"和"名字牌"。然后创建一个StreamingContext,设置数据处理的时间间隔。接着定义Kafka的参数,比如Kafka集群的地址、消费者组ID,还有数据的反序列化方式,这就像是告诉程序去哪里找Kafka,属于哪个"消费小组",以及怎么把数据"翻译"成能看懂的格式。
  • 准备好这些,就能通过KafkaUtils创建DStream来读取Kafka的数据啦。读取后,提取出数据里我们需要的部分,这里是value。再用熟悉的wordCount计算逻辑,把数据按空格切开、统计词频,最后打印出来。代码都写好后,启动程序,让它开始工作。
  • 接下来,还得启动Kafka集群,就像把工厂的机器都打开。再开启Kafka生产者,让它产生数据,这些数据就是我们要处理的"原材料"。一切准备就绪,运行程序,就能看到Spark-Streaming成功接收Kafka的数据并处理啦!
  • 最后,如果想看看消费进度,用kafka-consumer-groups.sh这个命令就行,它能清楚地告诉你数据处理到什么程度了。
相关推荐
今儿敲了吗4 分钟前
面向对象(二)——UML基础
笔记·uml
sheeta199812 分钟前
Vue 前端基础笔记
前端·vue.js·笔记
哆哆啦0014 分钟前
obsidian远程同步方案:infiniCloud+remotely save方案
笔记·git·obsidian
咸鱼翻身小阿橙30 分钟前
Qt Quick 登录界面代码学习笔记
笔记·qt·学习
Brilliantwxx31 分钟前
【C++】priority_queue以及 仿函数 的学习
开发语言·c++·笔记·学习·算法
小+不通文墨39 分钟前
树莓派4b-wiringpi库的安装和使用
驱动开发·经验分享·笔记·嵌入式硬件·学习
xuhaoyu_cpp_java1 小时前
SpringMVC学习(三)
java·经验分享·笔记·学习·spring
学机械的鱼鱼1 小时前
【学习笔记】XTDrone2 目录结构说明
笔记·学习
05候补工程师2 小时前
【矩阵代数】伴随矩阵、逆矩阵与秩的逻辑关系全梳理
笔记·线性代数·考研·矩阵
Hua-Jay2 小时前
OpenCV联合C++/Qt 学习笔记(十八)----二维码检测及积分图像
c++·笔记·qt·opencv·学习