1月18日
继续学习Spark Streaming,重点研究了Spark Streaming的高级特性,如状态管理、窗口操作和滑动窗口
完成了Spark Streaming的高级特性代码示例,实现了一个基于窗口的实时数据统计程序
from pyspark import SparkContext from pyspark.streaming import StreamingContext from pyspark.streaming.state import StateSpec # 初始化Spark Streaming上下文 sc = SparkContext(appName="SparkStreamingAdvanced") ssc = StreamingContext(sc, batchDuration=5) # 设置微批处理的时间间隔为5秒 ssc.checkpoint("checkpoint") # 设置检查点目录,用于状态恢复 # 定义状态更新函数 def update_word_count(new_values, running_count): """ 状态管理:更新单词计数 """ if running_count is None: running_count = 0 return sum(new_values, running_count) # 创建一个DStream,从Socket接收数据 # 假设数据通过Socket发送到localhost的9999端口 lines = ssc.socketTextStream("localhost", 9999) # 对接收到的每行数据进行处理 words = lines.flatMap(lambda line: line.split(" ")) # 将每行数据分割为单词 word_pairs = words.map(lambda word: (word, 1)) # 将单词映射为键值对 (word, 1) # 使用状态管理更新单词计数 word_counts = word_pairs.updateStateByKey(update_word_count) # 使用窗口操作统计过去30秒内的单词计数,窗口滑动间隔为10秒 windowed_word_counts = word_pairs.reduceByKeyAndWindow( lambda x, y: x + y, # 窗口内数据的聚合函数 lambda x, y: x - y, # 窗口移除数据的聚合函数 windowDuration=30, # 窗口持续时间 slideDuration=10 # 窗口滑动时间 ) # 打印状态管理和窗口操作的结果 word_counts.pprint() windowed_word_counts.pprint() # 启动StreamingContext ssc.start() # 等待程序运行 ssc.awaitTermination()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?