SparkStreming之updateStateByKey
正文
上一篇简单的写了一个socketTextStream的demo,这个问题就是每一次不能将之前和之后的数据进行合并统一。接下来我们通过demo进行把着这个问题解决。
val conf = new SparkConf().setMaster("local[2]").setAppName("updateState")
val sc: StreamingContext = new StreamingContext(conf, Seconds(2)) sc.checkpoint("hdfs://hadoop01:9000/streamcp")
val textStream: ReceiverInputDStream[String] = sc.socketTextStream("hadoop01", 9999)
val map: DStream[(String, Int)] = textStream.flatMap(_.split(",")).map((_, 1)) //目的在于将当前读取到的和上一次读取到的一样的key合并
val dStream = map.updateStateByKey((value: Seq[Int], state: Option[Int]) => {
//计算key此次出现的个数
val currentCount = value.sum
//上一次结果
val lastCount = state.getOrElse(0)
//因为看源码返回结果是Option[S],结果不是None就是Some,但是我们现在处理了所以只有Some即可
Some(currentCount + lastCount)
}) dStream.print() sc.start()
sc.awaitTermination()
sc.stop()
}
通过代码中的注释已经算是对这个方法的解释了,因为他可以拿到上一个计算结果,同时能读到当前数据,进行合并就显得简单的多了sc.checkpoint("hdfs://hadoop01:9000/streamcp")此目的是为了搭配updateStateBykey使用,如果不加则会报错提示缺少checkpoint,我们创建了也会在hdfs的目录中看到这个节点,同时这个节点下会生产文件数据。
这是在运行程序后不停的去checkpoint的数据,如下红色框中是此程序输入的内容
然后我们的代码运行结果如下,可以看出来,每次输入的结果已经可以汇总出来。
Read more books, read good books
SparkStreming之updateStateByKey的更多相关文章
- spark streaming - kafka updateStateByKey 统计用户消费金额
场景 餐厅老板想要统计每个用户来他的店里总共消费了多少金额,我们可以使用updateStateByKey来实现 从kafka接收用户消费json数据,统计每分钟用户的消费情况,并且统计所有时间所有用户 ...
- 【Spark篇】---SparkStreaming算子操作transform和updateStateByKey
一.前述 今天分享一篇SparkStreaming常用的算子transform和updateStateByKey. 可以通过transform算子,对Dstream做RDD到RDD的任意操作.其实就是 ...
- 067 HA与updateStateByKey结合
是HA与updateStateByKey相结合的程序. 有点问题,有点奇怪,重启项目后运行没有问题,但是第三次启动的时候,就不会在打印数据了,有点问题. 1.程序 package com.stream ...
- 065 updateStateByKey的函数API
一:使用场景 1.应用场景 数据的累加 一段时间内的数据的累加 2.说明 每个批次都输出自己批次的数据, 这个时候,可以使用这个API,使得他们之间产生联系. 3.说明2 在累加器的时候,起到的效果和 ...
- SparkStreaming updateStateByKey 保存记录信息
)(_+_) ) 查看是否存在,如果存在直接获取 )) ssc.checkpoint() )) //使用updateStateByKey 来更新状态 val stateDstream = wordDs ...
- Spark Streaming updateStateByKey案例实战和内幕源码解密
本节课程主要分二个部分: 一.Spark Streaming updateStateByKey案例实战二.Spark Streaming updateStateByKey源码解密 第一部分: upda ...
- spark streaming updateStateByKey 用法
object NetworkWordCount { def main(args: Array[String]) { ) { System.err.println("Usage: Networ ...
- spark-streming 中调用spark-sql时过程遇到的问题
在spark-streming 中调用spark-sql时过程遇到的问题 使用版本:spark-2.1.0 JDK1.8 1. spark-sql中对limit 的查询结果使用sum() 聚合操作不生 ...
- 14:Spark Streaming源码解读之State管理之updateStateByKey和mapWithState解密
首先简单解释一下)) //要使用updateStateByKey方法,必须设置Checkpoint. ssc.checkpoint("/checkpoint/") val sock ...
随机推荐
- SpringMVC详解(二)------详细架构
通过上篇博客,我们能编写一个 SpringMVC 的入门实例,但是为什么要这样写?这样写有啥好处?通过这篇博客我们会有详细的了解. 本篇博客源码下载链接:http://pan.baidu.com/s/ ...
- 从零宽断言说起到用python匹配html标签内容
版权声明:本文为博主原创文章,转载请附带原文网址http://www.cnblogs.com/wbchanblog/p/7411750.html ,谢谢! 提示:本文主要是讲解零宽断言,所以阅读本文需 ...
- 教程:基于访问控制的ABAP CDS视图权限
Hi! 对每一个CDS视图,我们都可以通过DCL(Data Control Language)定义访问控制.在这篇文章中,我会介绍ABAP CDS视图中非常重要的一面:权限管理. 本文的阐述基于我正在 ...
- SQL查询四舍五入 解决方法
方法1: SELECT CAST('123.456' as decimal) 将会得到 123(小数点后面的将会被省略掉). 如果希望得到小数点后面的两位. 则需要把上面的改为 SELECT CAST ...
- Android ViewPager无法使用wrap_content属性自适应高度
使用ViewPager的时候发现一个问题,当设置ViewPager控件的height属性为wrap_content时,控件高度一直是0,无法正常显示,在网上找到了解决办法,重写ViewPager的on ...
- 使用php下载的文件打不开,自己用着没问题,客户用就不行?
1 现象: 开发的时候用的好好的文件下载功能,部署到客户那边就不好使了,几乎所有从服务器下载下来的文件都不能打开. 比较了上传前的文件.上传后服务器端的文件.下载后本机的文件,发现同一个文件,上传后还 ...
- bzoj 3529 数表
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3529 题目大意:令F(i)为i的约数和,多次询问对于1<=x<=n,1< ...
- poj2912 Rochambeau
Description N children are playing Rochambeau (scissors-rock-cloth) game with you. One of them is th ...
- Spring整合Redis(spring-data-redis)
历经几天看了大量的博客资料,差不多算是搞定了,目前只是针对单个数据源,集群暂时没研究 maven依赖 <properties> <!-- redis 版本 --> <re ...
- httpclient 学习
Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性,它不仅是客户端发送Http请求变得容易,而且也方便了开发人员测试接口(基 ...