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: ArrayString): Unit = {

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

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

//定义kafka相关参数

val kafkaPara :MapString,Object = MapString,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:InputDStreamConsumerRecord\[String,String] = KafkaUtils.createDirectStreamString,String(

ssc,LocationStrategies.PreferConsistent,

ConsumerStrategies.SubscribeString,String(Set("kafka"),kafkaPara)

)

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

val valueDStream :DStreamString = 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脚本查看消费组的消费进度。

相关推荐
monsion11 分钟前
Loop Engineering:你不再 prompt agent,而是设计 prompt agent 的系统
大数据·人工智能·prompt
保卫大狮兄1 小时前
什么是WBS项目管理?WBS有哪些核心功能?
大数据·人工智能
标书畅畅行1 小时前
钛投标:全流程企业级AI标书解决方案,重构投标数字化生产力
大数据·人工智能
2601_954971131 小时前
2026年大数据专业证书报考指南
大数据
JZC_xiaozhong2 小时前
赛狐ERP订单如何自动同步到金蝶云星空?从发货到应收单生成,全程实时
大数据·数据挖掘·数据分析·数据集成与应用集成·赛狐erp集成·金蝶系统集成·系统应用对接
Tongpao_SSDHDD2 小时前
希捷酷鹰ST6000VX008实测解析:中小安防监控高性价比存储方案
大数据·数据库·人工智能
jkyy20142 小时前
车载健康座舱成新赛道?汽车健康数字化重塑出行新价值
大数据·人工智能·汽车·健康医疗
zhuhai_xigedian2 小时前
源网荷储一体化 vs 传统供用电模式:差异、优势与转型路径
大数据·人工智能·分布式·系统架构·能源
MetrixAeroCore2 小时前
智能电表海外通信解决方案:低功耗、高稳定远程抄表IoT连接
大数据·物联网
啾啾Fun2 小时前
【AI Coding】0-工程化视角理解AI Coding与LLM应用的上下文演化
大数据·人工智能