《零基础入门Spark》学习笔记 Day 13

Structured Streaming

数据加载

SparkSession的readStream API 来创建DataFrame

Scala 复制代码
var df: DataFrame = spark.readStream
.format("socket")
.option("host",host)
.option("port",port)
.load()

format:指定流处理的数据源头类型

option:与数据源头有关的若干选项

load:将数据流加载进Spark

流计算有3个重要的基础概念,比如flink也是如此

Source:流计算的数据源头

Processing:负责对数据流进行转换、过滤、聚合等操作

Sink:指的是数据流向的目的地

数据处理

Scala 复制代码
/**
使用DataFrame API完成Word Count计算
*/
 
// 首先把接收到的字符串,以空格为分隔符做拆分,得到单词数组words
df = df.withColumn("words", split($"value", " "))
 
// 把数组words展平为单词word
.withColumn("word", explode($"words"))
 
// 以单词word为Key做分组
.groupBy("word")
 
// 分组计数
.count()

数据输出

Scala 复制代码
/**
将Word Count结果写入到终端(Console)
*/
 
df.writeStream
// 指定Sink为终端(Console)
.format("console")
 
// 指定输出选项
.option("truncate", false)
 
// 指定输出模式
.outputMode("complete")
//.outputMode("update")
 
// 启动流处理应用
.start()
// 等待中断指令
.awaitTermination()

一般来说,Structured Streaming支持3种Sink输出模式

Complete mode:输出到目前为止处理过的全部内容

Append mode:仅输出最近一次作业的计算结果

Update mode:仅输出内容有根据输入的计算结果

相关推荐
m4Rk_20 分钟前
【论文阅读】Agent 记忆机制(113):Agentic Memory Management——从“检索相关信息”走向“管理 Agent 内部记忆”
论文阅读·人工智能·学习·开源·github
深圳老胡1 小时前
STM32C5A3ZG 网络调试总结:从启动失败到连续 Ping 稳定
笔记·stm32·单片机·代码规范
辣知1 小时前
辣知·化智92 《山海经》里的史前密码
学习
职豚求职小程序刷题1 小时前
宁德时代社招高岗晋升测评笔试改版了
笔记
CarIise1 小时前
JDBC 与数据库事务核心
数据库·笔记
鬼手点金2 小时前
KV Cache 未必是一次性的:可编辑、可组合的“笔记”
java·人工智能·笔记·学习·自动化·1024程序员节
摇滚侠2 小时前
《On Java 中文版 基础卷》阅读笔记 初始化和清理 08
java·开发语言·笔记
kyrie_sakura3 小时前
大模型学习18 大模型学习 - LangChain2_Model I/O
学习·自然语言处理
dire_7773 小时前
TH26027A开尔文夹子线缆问题导致同惠TH2822电桥测量不准
笔记
宝绿特塑业再生科技3 小时前
板材收缩率不稳,户外家具装配尺寸为何对不上:从切割尺寸变化到接缝不一的系统性排查与对策
笔记·科技·学习·生活·户外家具·hdpe再生颗粒·hdpe