从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这个命令就行,它能清楚地告诉你数据处理到什么程度了。
相关推荐
齐生13 天前
iOS 知识点 - 渲染机制、动画、卡顿小集合
笔记
用户962377954484 天前
VulnHub DC-1 靶机渗透测试笔记
笔记·测试
齐生15 天前
iOS 知识点 - IAP 是怎样的?
笔记
tingshuo29175 天前
D006 【模板】并查集
笔记
tingshuo29176 天前
S001 【模板】从前缀函数到KMP应用 字符串匹配 字符串周期
笔记
西岸行者11 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
starlaky11 天前
Django入门笔记
笔记·django
勇气要爆发11 天前
吴恩达《LangChain LLM 应用开发精读笔记》1-Introduction_介绍
笔记·langchain·吴恩达
悠哉悠哉愿意11 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
勇气要爆发12 天前
吴恩达《LangChain LLM 应用开发精读笔记》2-Models, Prompts and Parsers 模型、提示和解析器
android·笔记·langchain