Spark Streaming 实战:平均数计算和单词频率统计
Spark Streaming 实战:平均数计算和单词频率统计
本教程展示了使用 Spark Streaming 进行数据处理的两个实用案例:
-
计算每秒钟收到的平均数
from pyspark.streaming import StreamingContext # 创建StreamingContext对象,batch interval为1秒钟 ssc = StreamingContext(sparkContext, 1) # 创建DStream对象,从TCP Socket读取数据 lines = ssc.socketTextStream('localhost', 9999) # 将每行数据转换为float类型 numbers = lines.map(lambda x: float(x)) # 计算每秒钟收到的平均数 averages = numbers.reduce(lambda x, y: x + y) / numbers.count() # 输出结果 averages.pprint() # 启动StreamingContext ssc.start() # 等待StreamingContext停止 ssc.awaitTermination() -
计算每个时间窗口内的单词频率
from pyspark.streaming import StreamingContext # 创建StreamingContext对象,batch interval为1秒钟 ssc = StreamingContext(sparkContext, 1) # 创建DStream对象,从TCP Socket读取数据 lines = ssc.socketTextStream('localhost', 9999) # 将每行数据按空格分割为单词 words = lines.flatMap(lambda x: x.split()) # 将每个单词映射为(key, value)对,value为1 pairs = words.map(lambda x: (x, 1)) # 计算每个时间窗口内的单词频率 wordCounts = pairs.reduceByKeyAndWindow(lambda x, y: x + y, lambda x, y: x - y, 10, 2) # 输出结果 wordCounts.pprint() # 启动StreamingContext ssc.start() # 等待StreamingContext停止 ssc.awaitTermination()
通过这两个例子,您可以了解到如何使用 Spark Streaming 进行实时数据处理,并掌握一些常用的操作,例如:
- 从数据源读取数据
- 对数据进行转换和处理
- 计算统计指标
- 输出结果
原文地址: https://www.cveoy.top/t/topic/fVfh 著作权归作者所有。请勿转载和采集!