基于SparkStreaming的流式统计框架及其应用制造技术

技术编号:32209579 阅读:19 留言:0更新日期:2022-02-09 17:15
本发明专利技术公开了基于Spark Streaming的流式统计框架及其应用,包括数据获取计算模块和数据展示模块,数据获取计算模块的设计方法包括以下步骤:S11,基于TCP的Java Socket设置服务端,服务端从本地测试文件获取数据;S12,TCP Socket服务端利用线程控制,按照每秒50至100条交易记录的随机速度,发送给以Spark Streaming客户端进行数据实时计算处理;S13,客户端接收到数据利用MapToPair算子进行数据分组,再利用updateStateByKey算子进行数据有状态计算;当下一批数据计算完后,更新在缓存区与其key相同的状态的值;S14,由客户端将计算的数据按批次写入数据库,并且数据库按照key持续更新状态值。key持续更新状态值。key持续更新状态值。

【技术实现步骤摘要】
基于Spark Streaming的流式统计框架及其应用


[0001]本专利技术属于数据流
,涉及一种基于Spark Streaming的流式统计框架及其应用。

技术介绍

[0002]随着互联网的急速发展,越来越多的人通过网络进行活动,例如,购物,炒股,聊天,搜索自己想要的信息,一旦网络用户越来越多也会导致用户通过网络产生的数据也会越来越大,这就驱动着大数据时代的来临,而流式数据是大数据的一个重要数据类型,随着网络程序,平台的占比越来越重,流式数据的分析能够显示数据的变化趋势,让人们能够对行情走势进行预测,所以它具有不一般的意义。
[0003]流式数据可以这样理解,它是海量,不断到达的数据流,随着时间的增长,它也跟着不断增长的实时的动态的集合。
[0004]流式数据有着以下特点:
[0005](1)无限性,数据是实时的,只需数据源开启,数据就会持续不断地出现;
[0006](2)波动性,数据产生的速度不是恒定不变的,这个取决于数据源,不同时刻数据的产生速度可能会有比较大的区别;
[0007](3)时效性,产生的实时数据需要在一定时间内处理,不然等时间慢慢过去,其数据往往会越来越不保值,会失去它所代表的意义;
[0008](4)易失性,流式数据在经过获取和计算过后就会失去作用,除了利用数据或持久化操作对其进行保存,否则数据很难再现。

技术实现思路

[0009]本专利技术使用收集好的股票数据通过TCP Socket模拟股票数据流,而后使用Spark Streaming的有状态算子updateStateByKey进行我们的需求计算,计算出需求的数据并返回前端利用Echarts技术可视化,实现以股票数据为例的Spark Streaming流式统计框架。
[0010]本专利技术的技术方案包括基于Spark Streaming的流式统计框架,包括数据获取计算模块和数据展示模块,其中,
[0011]所述数据获取计算模块的设计方法包括以下步骤:
[0012]S11,基于TCP的Java Socket设置服务端,服务端从本地测试文件获取数据;
[0013]S12,TCP Socket服务端利用线程控制,按照每秒50至100条交易记录的随机速度,发送给以Spark Streaming客户端进行数据实时计算处理;
[0014]S13,客户端接收到数据利用MapToPair算子进行数据分组,再利用updateStateByKey算子进行数据有状态计算;当下一批数据计算完后,更新在缓存区与其key相同的状态的值;
[0015]S14,由客户端将计算的数据按批次写入数据库,并且数据库按照key持续更新状态值;
[0016]所述数据展示模块的设计方法包括以下步骤:
[0017]S21,MySql存储数据;
[0018]S22,后端通过逻辑将数据取出。
[0019]S23,前端通过Echart将数据异步加载动态可视化。
[0020]核心组件名词组件解释如下:
[0021]Echart亦是ECharts,一个纯Javascript的图表库,可以流畅的运行在PC和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等),涵盖各行业图表,满足各种需求。
[0022]基于上述目的,本专利技术还提供了一种基于Spark Streaming的流式统计框架的应用,基于上述框架,模拟流处理包括以下步骤:
[0023]S31,在离线的状态下读取本地系统文件内容,将文件的内容调用dataInputStreaming.read(bytes)方法按字节读取,再将读取的内容写入字节数组bytes输出;
[0024]S32,调用Thread.sleep()方法,使用线程控制向客户端发送数据的速度,按照每秒50至100条交易记录的随机速度发送,用socket.getOutputStream()方法发送给客户端,实现模拟一个不断发生的股票交易。
[0025]优选地,后端流统计包括:
[0026]S41,每10分钟发生的股票总交易数/买入次数/卖出次数的统计方法;
[0027]S42,每10分钟内股票最高单价/最低单价/最高交易额前5名的统计方法;
[0028]后端流统计前进行环境搭建,首先创建Spark Streaming技术流,创建SparkConf进行配置CPU的核心数,采用本地文件的规格进行计算和调度;然后配置赋予JavaSparkContext值,再将其赋予JavaStreamingContext,设置它的第二个参数为1s;最后利用系统的socketTextStream(hostname,port)方法进行监听服务端程序,并申请与主机名和端口号相同的服务端连接,连接成功后即可实现统计需求。
[0029]优选地,所述的S41每10分钟发生的股票总交易数/买入次数/卖出次数的统计方法包括以下步骤:
[0030]S411,定义一个当前时间t=93500000,对于买入和卖出的数据先用filter算子进行数据筛选,解析获取的JSON数据,设置字段f,其中f=66表示买入,f=83表示卖出,筛选出买入和卖出的数据;
[0031]S412,利用MapToPair算子对获取的每一批数据进行分组,获取的JSON数据,取出其中t字段,即股票交易时间,与当前时间比较。如果t<=当前时间,则分组(t,1),否则t就加上1000000,继续获取下一个10分钟的数据;当时间处于时间的跨时段点则要加500000。
[0032]S413,进行分组之后,利用有状态算子updateStateByKey进行计算,让其每个key的状态值在持续获取数据并实时计算后进行实时更新。
[0033]优选地,所述的S42每10分钟内股票最高单价/最低单价/最高交易额前5名的统计方法包括以下步骤:
[0034]S421,进行分组,分组记为(t,s),t为当前时间、s为每条交易记录;
[0035]S422,利用有状态算子updateStateByKey计算,在算子中使用冒泡排序算法,根据比较股票价格p以及交易总价a的值获取最高/最低单价/最高交易额前5名,存入top5数组;
[0036]S423,返回top5数组,并且根据接收的数据实时更新前五名的数据。
[0037]优选地,前端可视化采用Vue框架+ElementUI进行首页和菜单栏可视化,包括以下步骤:
[0038]S51,使用axios异步加载数据,通过Get请求,请求后端数据,获取的数据利用Echart的setOption,将数据渲染到图表中;
[0039]S52,在前端利用定时器,每隔预设的时间段访问一次数据库,使用Get请求获取数据库中的数据,加载到相应的图表中。
[0040]axios是一个基于promise的HTTP库,简单的讲就是本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.基于Spark Streaming的流式统计框架,其特征在于,包括数据获取计算模块和数据展示模块,其中,所述数据获取计算模块的设计方法包括以下步骤:S11,基于TCP的Java Socket设置服务端,服务端从本地测试文件获取数据;S12,TCP Socket服务端利用线程控制,按照每秒50至100条交易记录的随机速度,发送给以Spark Streaming客户端进行数据实时计算处理;S13,客户端接收到数据利用MapToPair算子进行数据分组,再利用updateStateByKey算子进行数据有状态计算;当下一批数据计算完后,更新在缓存区与其key相同的状态的值;S14,由客户端将计算的数据按批次写入数据库,并且数据库按照key持续更新状态值;所述数据展示模块的设计方法包括以下步骤:S21,MySql存储数据;S22,后端通过逻辑将数据取出。S23,前端通过Echart将数据异步加载动态可视化。2.基于Spark Streaming的流式统计框架的应用,其特征在于,基于权利要求1所述的框架,模拟流处理包括以下步骤:S31,在离线的状态下读取本地系统文件内容,将文件的内容调用dataInputStreaming.read(bytes)方法按字节读取,再将读取的内容写入字节数组bytes输出;S32,调用Thread.sleep()方法,使用线程控制向客户端发送数据的速度,按照每秒50至100条交易记录的随机速度发送,用socket.getOutputStream()方法发送给客户端,实现模拟一个不断发生的股票交易。3.根据权利要求2所述的基于Spark Streaming的流式统计框架的应用,其特征在于,后端流统计包括:S41,每10分钟发生的股票总交易数/买入次数/卖出次数的统计方法;S42,每10分钟内股票最高单价/最低单价/最高交易额前5名的统计方法;后端流统计前进行环境搭建,首先创建Spark Streaming技术流,创建SparkConf进行配置CPU的核心数,采用本地文件的规格进行计算和调度;然后配置赋予JavaSparkContext值,再将其赋予JavaStreamingContext,设置它的第二个参数为1s;最后利用系统的socketTextSt...

【专利技术属性】
技术研发人员:张继勇舒洪睿陈兴颖
申请(专利权)人:杭州富阳富创大数据产业创新研究院有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1