Spark Streaming 实战:平均数计算和单词频率统计

本教程展示了使用 Spark Streaming 进行数据处理的两个实用案例:

  1. 计算每秒钟收到的平均数

    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()
    
  2. 计算每个时间窗口内的单词频率

    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 进行实时数据处理,并掌握一些常用的操作,例如:

  • 从数据源读取数据
  • 对数据进行转换和处理
  • 计算统计指标
  • 输出结果
Spark Streaming 实战:平均数计算和单词频率统计

原文地址: https://www.cveoy.top/t/topic/fVfh 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录