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脚本查看消费组的消费进度。

相关推荐
数字冰雹4 分钟前
数字孪生如何重塑数据中心运维新范式
大数据·人工智能
阿杰同学5 分钟前
Hadoop 面试题及答案整理,最新面试题
大数据·hadoop·分布式
秋刀鱼 ..43 分钟前
第三届教育发展与社会科学国际学术会议 (EDSS 2026)
大数据·python·计算机网络·数学建模·制造
BJ_Bonree1 小时前
Bonree ONE 发布直通车| 如何利用核心链路,快速排查定位系统故障?
大数据·运维·人工智能
科士威传动1 小时前
微型导轨的类型性能差异与场景适配需求
大数据·运维·人工智能·科技·机器人·自动化
雨大王5121 小时前
汽车零部件企业如何通过OEE钻取分析实现降本增效?
大数据·人工智能
EveryPossible1 小时前
地图学习练习
大数据·学习
非著名架构师1 小时前
从“人找信息”到“信息找人”:气象服务模型如何主动推送风险,守护全域安全?
大数据·人工智能·安全·数据分析·高精度天气预报数据·galeweather.cn
神算大模型APi--天枢6461 小时前
国产硬件架构算力平台:破解大模型本地化部署难题,标准化端口加速企业 AI 落地
大数据·前端·人工智能·架构·硬件架构
GIS工具-gistools20212 小时前
用 Sentinel-1 Sentinel-2 结合监测 矿场采掘情况
大数据·sentinel·gis