Spark-streaming核心编程

1. 导入依赖 ‌:

<dependency>

<groupId>org.apache.spark</groupId>

<artifactId>spark-streaming-kafka-0-10_2.12</artifactId>

<version>3.0.0</version>

</dependency>

2.编写代码 ‌:

创建SparkConf和StreamingContext。

定义Kafka相关参数,如bootstrap servers、group id、key和value的deserializer。

使用KafkaUtils.createDirectStream方法创建DStream,该方法接受StreamingContext、位置策略、消费者策略等参数。

提取数据中的value部分,并进行word count计算。

启动StreamingContext并等待其终止。

import org.apache.kafka.clients.consumer.{ConsumerConfig, ConsumerRecord}

import org.apache.spark.SparkConf

import org.apache.spark.streaming.{Seconds, StreamingContext}

import org.apache.spark.streaming.dstream.{DStream, InputDStream}

import org.apache.spark.streaming.kafka010.{ConsumerStrategies, KafkaUtils, LocationStrategies}

object DirectAPI {

def main(args: Array[String]): Unit = {

val sparkConf = new SparkConf().setMaster("local[*]").setAppName("direct")

val ssc = new StreamingContext(sparkConf,Seconds(3))

//定义kafka相关参数

val kafkaPara :Map[String,Object] = Map[String,Object](ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG

->"node01:9092,node02:9092,node03:9092",

ConsumerConfig.GROUP_ID_CONFIG->"kafka",

"key.deserializer"->"org.apache.kafka.common.serialization.StringDeserializer",

"value.deserializer" -> "org.apache.kafka.common.serialization.StringDeserializer"

)

//通过读取kafka数据,创建DStream

val kafkaDStream:InputDStream[ConsumerRecord[String,String]] = KafkaUtils.createDirectStream[String,String](

ssc,LocationStrategies.PreferConsistent,

ConsumerStrategies.Subscribe[String,String](Set("kafka"),kafkaPara)

)

//提取出数据中的value部分

val valueDStream :DStream[String] = kafkaDStream.map(record=>record.value())

//wordCount计算逻辑

valueDStream.flatMap(_.split(" "))

.map((_,1))

.reduceByKey(+)

.print()

ssc.start()

ssc.awaitTermination()

}

}

3.运行程序 ‌:

开启Kafka集群。

4.使用Kafka生产者产生数据。

kafka-console-producer.sh --broker-list node01:9092,node02:9092,node03:9092 --topic kafka

5、运行Spark Streaming程序,接收Kafka生产的数据并进行处理。

6.查看消费进度 ‌:

使用Kafka提供的kafka-consumer-groups.sh脚本查看消费组的消费进度。

相关推荐
阿星AI工作室9 小时前
刘润年中大课笔记:一句话说清AI落地之战的本质
大数据·人工智能·创业创新·商业
1892280486112 小时前
NY352固态MT29F32T08GWLBHD6-24QJ:B
大数据·服务器·人工智能·科技·缓存
不开大的凯207713 小时前
麦当秀AiPPT战略转向:从SaaS订阅迈向Token经济,AI办公定价模式迎来新探索
大数据·人工智能
程序鉴定师13 小时前
西安小程序制作的可靠选择与发展前景
大数据·小程序
黎阳之光13 小时前
黎阳之光:以视频孪生重构智慧医院信息化,打造高标项目核心竞争力
大数据·人工智能·物联网·算法·数字孪生
qziovv14 小时前
Git 回退场景
大数据·git·elasticsearch
ZeroNews内网穿透15 小时前
面向 AI 协作的本地客户端能力:ZeroNews Agent Skills
大数据·人工智能·elasticsearch
SelectDB15 小时前
Agent 时代,为什么传统的可观测方案不适用了?
大数据·数据库·数据分析
Elastic 中国社区官方博客15 小时前
快 12 倍的 Elasticsearch 向量索引:使用 GPU 和 CPU 分层部署 NVIDIA cuVS
大数据·人工智能·elasticsearch·搜索引擎·ai·全文检索·nvidia
鹧鸪云光伏15 小时前
光伏设计软件:多屋脊房型如何设计?
大数据·信息可视化·光伏·光伏设计·光伏图纸