sparkStreaming wordcount累加

本文介绍如何使用Apache Spark Streaming实现对实时数据流中单词的计数。具体包括配置Spark Streaming环境、设置数据源为Netcat程序输出、定义5秒时间窗口进行单词分割与计数、并展示计数结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.目的

    对netcat输出的单词按时间5s分片进行单词计数

2.素材

启动linux上的netcat程序

    nc -lk 9999

不断输入字符

    hello world hi world

3.代码

/**
  * Created by puwenchao on 2016-08-19.
  */

import org.apache.log4j.{Level, Logger}
import org.apache.spark._
import org.apache.spark.streaming._
import org.apache.spark.storage.StorageLevel

object streamingwc{
  def main(args:Array[(String)]): Unit ={

    //设置日志等级
    Logger.getLogger("org.apache.spark").setLevel(Level.WARN)
    Logger.getLogger("org.eclipse.jetty.server").setLevel(Level.OFF)

    //创建SparkStreaming上下文,并设置时间间隔5s
    val conf=new SparkConf().setAppName("streamingwc").setMaster("local[2]")
    val ssc=new StreamingContext(conf,Seconds(5))

    //设置数据来源与持久化政策
    val lines=ssc.socketTextStream("192.168.252.164",9999,StorageLevel.MEMORY_ONLY)
    //执行单词计数
    val wc=lines.flatMap(_.split(" ")).map(x=>(x,1)).reduceByKey(_+_)
    //打印离散流中的条目
    wc.print()

    //开始计算
    ssc.start()
    //等待计算终结
    ssc.awaitTermination()
  }
}

4.输出

    -------------------------------------------

    Time: 1471574670000 ms

    -------------------------------------------

    (hello,1)

    (world,2)

    (hi,1)

转载于:https://my.oschina.net/puwenchao/blog/735238

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值