《零基础入门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:仅输出内容有根据输入的计算结果

相关推荐
小弥儿5 小时前
GitHub今日热榜 | 2026-09-15:AI 智能体与本地生成工具领跑
学习·开源
老当益壮梁奶奶5 小时前
51单片机DS18B20温度传感器详解:单总线时序与C51驱动实现
笔记·stm32·单片机·嵌入式硬件·51单片机
susplus6 小时前
【初识ARM】ARM相关基础概念
学习·arm
XiHongShi20166 小时前
键盘大小写指示器(代替键盘灯)
学习·计算机
小叶肥辉6 小时前
LangChain链和LangGraph图的学习笔记【三】——分别用langchain_openai库和langchain_community库调用大模型
笔记·python·langchain
斯维赤7 小时前
AI Agent学习之路 | Prompt Engineering(提示词工程)的三板斧核心技巧
人工智能·学习·prompt
从零开始的嵌入式之旅8 小时前
day44
arm开发·经验分享·笔记·嵌入式硬件
2301_802651089 小时前
imx6ull裸机开发:UART
学习
辣知10 小时前
辣知·化智56 良渚神权与夏朝颠覆
学习
商业白皮书10 小时前
杭州企业做 GEO 怎么选服务商?B2B 制造、外贸出海与品牌连锁选型指南
笔记