基于Spark Streaming预测股票走势的例子(二)
上一篇博客中,已经对股票预测的例子做了简单的讲解,下面对其中的几个关键的技术点再作一些总结。
1、updateStateByKey
由于在1.6版本中有一个替代函数,据说效率比较高,所以作者就顺便研究了一下该函数的用法。
def mapWithState[StateType, MappedType](spec :StateSpec[K, V, StateType, MappedType]) : MapWithStateDStream[K, V, StateType, MappedType] = { }
上面是函数的原型,接收一个StateSpec的对象,其实就是对updateStateByKey相关参数的一个封装。该对象接收4个类型参数,KEY值的类型,VALUE的类型,State的类型,Mapped的类型。理解这个四个类型参数也比较关键,这个跟updateStateByKey有少许区别:K,V这两个类型参数不需要太多解释;State的类型可以是任意类型,Float,(Float,Int),OneObject等等;MappedType是映射结果的类型,也就是说返回的类型也可以是任意类型,这点与updateStateByKey有少许不同。下面是一个示例
/** mapWithState.function是用每个key的state对(k,v)进行map
* 对输入的每一个(stockMame,stockPrice)键值对,使用每个key的state进行映射,返回新的结果
* 此处的state是每个stockName的上一次的价格
* 用输入的(stockName,stockPrice)中的stockPrice更行state中的上一次的价格(state.update函数)
* 映射结果为(stockName,(stockPrice-上一次价格,1)) ,当然映射结果也可以是其他值,例如(stockName,最后一次价格变化的方向)
* */
val updatePriceTrend = (key:String, newPrice: Option[Float],state:State[Float]) => {
val lstPrice:Float = state.getOption().getOrElse(newPrice.getOrElse(0.0f))
state.update(newPrice.getOrElse(0.0f))
// println(new SimpleDateFormat("HH:mm:ss").format(new Date())+"-"+newPrice.getOrElse(0.0f)+","+lstPrice)
(key,(newPrice.getOrElse(0.0f)-lstPrice,1))
}
2、reduceByKeyAndWindow
上一个例子中,虽然使用到了该函数,但其实是在官方例子的基础上依葫芦画瓢写的,并不能很好的理解该函数的具体用法。下面是此次优化后的代码
val reduceFunc = (reduced: (Float,Int), newPair: (Float,Int)) => {
if (newPair._1 > 0) (reduced._1 + newPair._1, reduced._2 + newPair._2)
else (reduced._1 + newPair._1, reduced._2 - newPair._2)
}
val invReduceFunc = (reduced: (Float,Int), oldPair: (Float,Int)) => {
if (oldPair._1 > 0) (reduced._1 + oldPair._1, reduced._2 - oldPair._2)
else (reduced._1 + oldPair._1, reduced._2 + oldPair._2)
}
/** 每隔slideLen个BatchTime对过去windowLen个(不包含当前Batch)BatchTime的RDD进行计算
* */
val windowedPriceChanges = stockPrice.reduceByKeyAndWindow(reduceFunc,invReduceFunc,
Seconds(3),//windowLen
Seconds(1) //slideLen
)
其中两个函数很关键:reduceFunc、invReduceFunc。reduceFunc是对进入窗口的数据进行的计算,invReduceFunc是对离开窗口的数据进行的计算。那么怎么理解进入窗口和离开窗口呢?要首先理解窗口函数的基本意义,下图展示了滑动窗口的概念 。
aaarticlea/png;base64,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" alt="" />
如上图所示,一个滑动窗口时间段((sliding window length)内的所有RDD会进行合并以创建windowed DStream所对应的RDDD。每个窗口操作有两个参数:
- window length - The duration of the window (3 in the figure),滑动窗口的时间跨度,指本次window操作所包含的过去的时间间隔(图中包含3个batch interval,可以理解时间单位)
- sliding interval - The interval at which the window operation is performed (2 in the figure).(窗口操作执行的频率,即每隔多少时间计算一次)
These two parameters must be multiples of the batch interval of the source DStream (1 in the figure). 这表示,sliding window length的时间长度以及sliding interval都要是batch interval的整数倍。batch interval是在构造StreamingContext时传入的(1 in the figure)
那么上图中,在time5的时候,reduceFunc处理的数据就是time4和time5;invReduceFunc处理的数据就是time1和time2。此处需要特别特别特别处理,这里的window at time 5要理解成time 5的最后一刻,如果这里的time是一秒的话,那么time 5其实就是第5秒最后一刻,也就是第6秒初。关于这一点在后面的博文中会具体讲解。
关键点解释的差不多了,reduceFunc的函数就好理解了,该函数的第一个参数reduced可以理解成在time 3的时候计算的最终结果,第二个参数其实也就分别是time 4和time 5的数据(该函数应该会被调用多次的);那么time 4和time 5的这两批数据是怎么汇总的呢?仍然是调用reduceFunc,也即是对这两批数据中的每一条具体的记录按照时间的先后顺序调用reduceFunc,其实也就是leftReduce。invReduceFunc同理。
好了,两个关键函数就算解释清楚了,如果还有不清楚的地方,可以留言评论,最后附上源码的git地址:http://git.oschina.net/gabry_wu/BigDataPractice
PS:未经允许,禁止转载,否则将追究法律责任!
基于Spark Streaming预测股票走势的例子(二)的更多相关文章
- 基于Spark Streaming预测股票走势的例子(一)
最近学习Spark Streaming,不知道是不是我搜索的姿势不对,总找不到具体的.完整的例子,一怒之下就决定自己写一个出来.下面以预测股票走势为例,总结了用Spark Streaming开发的具体 ...
- 苏宁基于Spark Streaming的实时日志分析系统实践 Spark Streaming 在数据平台日志解析功能的应用
https://mp.weixin.qq.com/s/KPTM02-ICt72_7ZdRZIHBA 苏宁基于Spark Streaming的实时日志分析系统实践 原创: AI+落地实践 AI前线 20 ...
- StreamDM:基于Spark Streaming、支持在线学习的流式分析算法引擎
StreamDM:基于Spark Streaming.支持在线学习的流式分析算法引擎 streamDM:Data Mining for Spark Streaming,华为诺亚方舟实验室开源了业界第一 ...
- 基于Spark Streaming + Canal + Kafka对Mysql增量数据实时进行监测分析
Spark Streaming可以用于实时流项目的开发,实时流项目的数据源除了可以来源于日志.文件.网络端口等,常常也有这种需求,那就是实时分析处理MySQL中的增量数据.面对这种需求当然我们可以通过 ...
- Spark Streaming 002 统计单词的例子
1.准备 事先在hdfs上创建两个目录: 保存上传数据的目录:hdfs://alamps:9000/library/SparkStreaming/data checkpoint的目录:hdfs://a ...
- Spark 实践——基于 Spark Streaming 的实时日志分析系统
本文基于<Spark 最佳实践>第6章 Spark 流式计算. 我们知道网站用户访问流量是不间断的,基于网站的访问日志,即 Web log 分析是典型的流式实时计算应用场景.比如百度统计, ...
- 通过机器学习的线性回归算法预测股票走势(用Python实现)
在本人的新书里,将通过股票案例讲述Python知识点,让大家在学习Python的同时还能掌握相关的股票知识,所谓一举两得.这里给出以线性回归算法预测股票的案例,以此讲述通过Python的sklearn ...
- 【自动化】基于Spark streaming的SQL服务实时自动化运维
设计背景 spark thriftserver目前线上有10个实例,以往通过监控端口存活的方式很不准确,当出故障时进程不退出情况很多,而手动去查看日志再重启处理服务这个过程很低效,故设计利用Spark ...
- 一个spark streaming的黑名单过滤小例子
> nc -lk 9999 20190912,sz 20190913,lin package com.lin.spark.streaming import org.apache.spark.Sp ...
随机推荐
- Go:条件语句、循环语句
一.条件语句 package main import ( "fmt" "io/ioutil" ) // if的条件不需要括号 func xx(i int) in ...
- React组件设计技巧
React组件设计 组件分类 展示组件和容器组件 展示组件 容器组件 关注事物的展示 关注事物如何工作 可能包含展示和容器组件,并且一般会有DOM标签和css样式 可能包含展示和容器组件,并且不会有D ...
- 关于React.PropTypes的废除,以及新版本下的react的验证方式
React.PropTypes是React用来typechecking的一个属性.要在组件的props上运行typechecking,可以分配特殊的propTypes属性: class Greetin ...
- 《AlwaysRun!》第八次团队作业:Alpha冲刺 第一天
项目 内容 这个作业属于哪个课程 老师链接 这个作业的要求在哪里 实验十二 团队作业8:软件测试与Alpha冲刺 团队名称 Always Run! 作业学习目标 (1)掌握软件测试基础技术 (2)学习 ...
- Java基础学习总结(77)——Java枚举再总结
在Java SE5之前,我们要使用枚举类型时,通常会使用static final 定义一组int常量来标识,代码如下 public static final int MAN = 0; public s ...
- JSON.parseObject将json字符串转换为bean类,是否大小写敏感区分---https://blog.csdn.net/mathlpz126/article/details/80684034
JSON.parseObject将json字符串转换为bean类,是否大小写敏感区分 https://blog.csdn.net/mathlpz126/article/details/80684034
- nyoj 4 ASCII码排序(set,multiset)
ASCII码排序 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 输入三个字符(可以重复)后,按各字符的ASCII码从小到大的顺序输出这三个字符. 输入 第一行输 ...
- CentOS服务器上部署 oracle10gr2
1.下载Centos系统 Linux 镜像文件. 推荐使用 CentOS5.4,下载地址:http://isoredirect.centos.org/centos/5/isos/i38 ...
- Codeforces Round #232 (Div. 2) On Sum of Fractions
Let's assume that v(n) is the largest prime number, that does not exceed n; u(n) is the smallest pri ...
- PHP小白学习日程之旅
我是一名专升本的学生,在这里偶然接触了博客园,我觉得非常好,每天可以在这里看别人的分享与学习,还会在大学学习俩年,我只想专注的吧自己的技术提高,跟园子里的朋友们一起学习与分享加油!!!!!!!!!!! ...