spark-streaming

DStream创建

Kafka数据源:

ReceiverAPI:需要一个专门的 Executor 去接收数据,然后发送给其他的 Executor 做计算。存在的问题,接收数据的 Executor 和计算的 Executor 速度会有所不同,特别在接收数据的 Executor速度大于计算的 Executor 速度,会导致计算数据的节点内存溢出。

DirectAPI:是由计算的 Executor 来主动消费 Kafka 的数据,速度由自身控制。

Kafka 0-10 Direct 模式

需求:通过 SparkStreaming 从 Kafka 读取数据,并将读取过来的数据做简单计算,最终打印到控制台。

导入依赖

<dependency>

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

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

<version>3.0.0</version>

</dependency>

编写代码

/**

* 通过DirectAPI 0-10 消费kafka数据

* 消费的offset保存在_consumer_offsets主题中

*/

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()

开启Kafka集群

开启Kafka生产者,产生数据

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

运行程序,接收Kafka生产的数据并进行相应处理

查看消费进度

kafka-consumer-groups.sh --describe --bootstrap-server node01:9092,node02:9092,node03:9092 --group kafka

相关推荐
Q26433650233 小时前
【有源码】基于 Hadoop 生态的化妆品销售数据存储分析与可视化 面向化妆品行业的用户画像构建与销售机会识别研究
大数据·hadoop·python·机器学习·spark·毕业设计·课程设计
yuzhiboyouye11 小时前
那xml对应的sql语法,列举一下
xml·数据库·sql
. . . . .11 小时前
乐观锁 vs 悲观锁
数据库·sql
勤奋的树懒16 小时前
从手写 SQL 到 Windows 工具:致远 OA 文件清理实践
数据库·sql·windows server·致远oa
开开心心就好20 小时前
清理此电脑网盘图标工具,开源免费好用
网络·网络协议·tcp/ip·智能手机·电脑·scala·erlang
(Charon)21 小时前
【Kafka】消息队列学习(一):为什么需要Kafka?从消息队列到整体架构
学习·架构·kafka
clz131452121 小时前
风险特征系统 EPC 子系统:基于 Kafka 数据源与数据集配置的 Flink 指标清洗加工
分布式·flink·kafka
维基框架1 天前
PyTorch正在重构开源AI基础设施
人工智能·pytorch·重构
富士康质检员张全蛋1 天前
Kafka实战 生产阶段 消费阶段的拦截器
kafka
牧羊人.3331 天前
动手学深度学习 04 | Dataset 和 DataLoader、数据增强
人工智能·pytorch·深度学习·算法