Spark-Streaming>实战练习

本文介绍了如何使用Spark Streaming进行实时数据处理,包括WordCount示例,通过updateStateByKey实现累计计数,以及利用reduceByKeyAndWindow进行滑动窗口操作。此外,还展示了如何统计一定时间内的热门词汇TopN,以模拟百度热搜排行榜功能。
摘要由CSDN通过智能技术生成

WordCount

1、需求&准备
图解
在这里插入图片描述

  • 首先在linux服务器上安装nc工具
    nc是netcat的简称,原本是用来设置路由器,我们可以利用它向某个端口发送数据
    yum install -y nc
  • 启动一个服务端并开放9999端口,等一下往这个端口发数据
    nc -lk 9999
  • 发送数据

2、代码演示

package cn.itcast.streaming

import org.apache.spark.streaming.dstream.{
   DStream, ReceiverInputDStream}
import org.apache.spark.{
   SparkConf, SparkContext}
import org.apache.spark.streaming.{
   Seconds, StreamingContext}

object WordCount {
   
  def main(args: Array[String]): Unit = {
   
    //1.创建StreamingContext
    //spark.master should be set as local[n], n > 1
    val conf = new SparkConf().setAppName("wc").setMaster("local[*]")
    val sc = new SparkContext(conf)
    sc.setLogLevel("WARN")
    //5表示5秒中对数据进行切分形成一个RDD
    val ssc = new StreamingContext(sc,Seconds(5))
    //2.监听Socket接收数据
    //ReceiverInputDStream就是接收到的所有的数据组成的RDD,封装成了DStream,接下来对DStream进行操作就是对RDD进行操作
    val dataDStream: ReceiverInputDStream[String] = ssc.socketTextStream("node01",9999)
    //3.操作数据   (计算每个批次的数据得单词的总和)
     val WordCount: DStream[(String, Int)] = dataDStream.flatMap(a=>a.split(" ")).map(x=>(x,1)).reduceByKey(_+_)
     
    wordAndCount.print()
    ssc.start()//开启
    ssc.awaitTermination()//等待停止
  }
}

3、执行

  • 1.先执行nc -lk 9999
  • 2.然后执行代码
  • 3.不断的在1中输入不同的单词
    hadoop spark sqoop hadoop spark hive hadoop
  • 4.观察IDEA控制台输出
    sparkStreaming每隔5s计算一次当前5s内的数据,然后将每个批次的数据输出

updateStateByKey

1、问题
在上面的那个案例中存在这样一个问题:
每个批次的单词次数都被正确的统计出来,但是结果不能累加!
如果需要累加需要使用updateStateByKey(func)来更新状态.

2、代码演示

package cn.itcast.streaming

import org.apache
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值