一种基于Spark的物联网大数据计算方法与流程

文档序号:17358325发布日期:2019-04-09 21:53阅读:390来源:国知局
本发明涉及物联网
技术领域
:,尤其涉及一种基于spark的物联网大数据计算方法。
背景技术
::物联网飞速发展,企业也在积极利用物联网的力量提高自身的业务能力。对于物联网来讲,最大的挑战并不是连接,而是物联网的数据价值。利用技术的手段让万物拥有智慧正在不断发展,从而进一步提高了物联网的商业价值。随着大数据技术的兴起,将物联网与大数据相结合成为了一种大势所趋。传统物联网终端数据的存储和处理实现方式是利用传统关系型数据库进行存储、利用数据库sql语句或编程进行计算。其突出的问题是无法解决大数据量的高频插入和查询,并且方案的成本高昂、可扩展性差。而目前相对流行的非关系型数据库(nosql)解决方案,虽然能较好地解决大数据量的高频插入,但其对用户的使用限制较多,可用的查询方式也相对单一。利用传统关系型数据库处理物联网终端数据,在数据量大的情况下存在性能缺陷,无法满足响应时长的要求。并且无法存储海量历史数据。做横向扩展。专利cn106777387a提供了一种基于hbase的物联网大数据存取方法。将物联网终端设备的采集数据存储到hbase库,并通过hbase提供的api进行数据的提取操作。利用分布式数据库hbase存储海量物联网终端数据,虽然能满足大数据量存储的要求,也能满足基于rowkey主键(rowkey作为hbase数据库的主键,起着数据索引作用。并且hbase库数据的底层磁盘存储也是基于rowkey的字典序顺序存储。所以在hbase库的应用中,基于rowkey作为查询条件的数据查询效率非常高)快速查询的要求。但是在基于非rowkey主键的数据查询时,涉及全表数据扫描,性能会急剧下降。并且hbase数据库的查询、计算api功能有参数约束,限制较多,在数据处理方面缺乏灵活性,很难适应各种物联网数据处理应用的场景。专利cn108563781a提供了基于hadoop的物联网大数据处理方法及系统。将物联网终端设备数据存储到hadoop的分布式文件系统hdfs,通过hadoop的mapreduce框架对源数据进行处理,然后将处理后的数据存入hbase库。单纯利用hdfs分布式文件系统存储物联网终端数据,局限性比较多。不合适实时数据的存储,一般累计一段时间的物联网终端设备数据形成文件后进行存储操作。文件系统会对文件进行自动分块,根据hdfs文件系统的设计原理(hdfs文件系统会对存储的文件自动进行分块操作,将文件分割为一个或多个数据块进行冗余备份存储。块的大小默认为128m,对于不足128m的文件,同样会占用128m的磁盘空间),不适合大量小文件的存储,大量小文件会造成磁盘空间的浪费。利用mapreduce技术对hdfs文件系统上的数据进行处理,只适合离线计算(实时性要求不高的计算),不适应实时计算。而且mapreduce离线计算过程中,中间结果数据涉及到磁盘持久化操作,性能普遍较低。技术实现要素:针对现有技术中物联网终端大数据实时存储、查询计算性能较低的问题,本发明的目的是提供一种基于spark的物联网大数据计算方法,结合使用hbase数据库作为底层数据存储介质,使用spark技术作为主要的数据处理框架,形成一整套的物联网数据存储、计算方案。为了实现上述发明目的,本发明采用的技术方案是:一种基于spark的物联网大数据计算方法,包括数据入库与数据查询;所述数据入库具体包括:s1、在大数据平台的hbase数据库中创建物联网设备的hbase表;s2、物联网设备采集获得采集数据,根据采集数据以及物联网设备的终端数据生成rowkey;s3、将终端数据与采集数据以及生成的rowkey存储至hbase数据库中对应物联网设备的hbase表中;s4、循环步骤s2、s3,将物联网设备的数据顺时存储至hbase数据库;所述数据查询具体包括:s5、应用端向大数据平台发起查询申请,将spark根据查询申请中包含的查询条件抽取hbase数据库中的数据并存入弹性分布式数据集hbaserdd;s6、大数据平台利用spark内存计算技术对弹性分布式数据集hbaserdd进行处理,获取查询的结果数据,大数据平台将结果数据返回至应用端。作为上述技术方案的进一步改进,步骤s1中,所述终端数据包括终端类型名、终端编号与项目编号;所述采集数据包括采集时间戳、信息量编码与信息量,所述信息量为温度、湿度、位置经度与位置纬度中的一种或多种。作为上述技术方案的进一步改进,所述根据终端数据与采集数据生成对应的rowkey具体包括:s21、以项目编号反转后的字符串作为rowkey的前缀;s22、以终端编号反转后的字符串作为rowkey的第二个部分;s23、以采集时间戳构成rowkey的第三个组成部分;s24、以随机数作为rowkey的尾缀。作为上述技术方案的进一步改进,步骤s1中,所述hbase表的表名的第一部分为表名固定前缀,hbase表的表名的第二部分为终端类型名。作为上述技术方案的进一步改进,所述查询条件为项目编号、终端编号、采集起始时间与采集结束时间中的一个或多个组合。作为上述技术方案的进一步改进,所述spark根据查询条件抽取hbase数据库中的数据并存入弹性分布式数据集hbaserdd具体包括:s51、构建hbase的配置对象以及sparkcontext上下文对象;s52、根据hbase的配置对象与sparkcontext上下文对象构建hbasecontext对象;s53、根据查询条件构建hbase查询扫描器scan的起始rowkey和结束rowkey;s54、根据起始rowkey和结束rowkey构造hbase查询扫描器scan;s55、hbase查询扫描器scan调用步骤s52构建的hbasecontext对象的hbasescanrdd方法,抽取hbase数据库中的数据并存入弹性分布式数据集hbaserdd。作为上述技术方案的进一步改进,步骤s6中,所述大数据平台利用spark内存计算技术对弹性分布式数据集hbaserdd进行处理具体包括:s61、通过spark内置的算子对弹性分布式数据集hbaserdd进行清洗、转换操作得到结构化数据集;s62、构造与结构化数据集相匹配的数据结构体;s63、根据结构化数据集与数据结构体构建dataframe数据集合,将dataframe数据集合注册到一张内存数据表;s64、调用sparksql的sql方法传入sql执行语句对步骤s63构造的内存数据库表中的数据进行统计分析操作,得到各个维度的统计指标值;s65、调用sparkmllib的机器学习库算法,传入dataframe数据集合以及器学习算法对应的参数,可以对步骤s63构造的内存数据库表中的数据进行聚类、分类、预测、推荐引擎模型的训练、预测操作,得到训练模型或者聚类、分类、预测、推荐结果集;s66、调用spark的缓存或者持久化函数将步骤s64或者步骤s65处理的结果集保存作为结果数据。本发明的有益技术效果:本发明通过利用hbase数据库来存储物联网终端历史数据,设计了合适的rowkey结构,结合hbase库依据rowkey存储的规则,实现了数据的高效存储,有效的解决了大数据量情况下的高频入库和查询问题,并兼顾了系统的可扩展性和数据负载均衡问题,相对于传统关系型数据库,利用分布式数据库hbase作为海量物联网终端数据的存储库,会使企业成本更加低廉;基于spark内存计算框架的高性能数据处理以及数据处理灵活的特性,利用spark内存计算技术来对物联网终端数据进行计算处理,有效的提高了数据处理、计算的性能,对比传统关系型数据库和离线计算框架mapreduce,spark的处理速度更快,响应时间更短,而且spark编程基于函数式编程语言scala,采用scala语言编写数据处理程序更加简洁、高效。附图说明图1是泵车历史数据入hbase数据库流程图;图2是泵车历史轨迹查询流程图。具体实施方式为了使本公开的目的、技术方案和优点更加清楚明白,下结合具体实施例,并根据附图,对本发明进一步详细说明。需要说明的是,在附图或说明书描述中,未描述的内容以及部分英文简写为所属
技术领域
:中普通技术人员所熟知的内容。本实施例中给定的一些特定参数仅作为示范,在不同的实时方式中该值可以相应地改变为合适的值。以泵车历史轨迹查询应用为例讲述本发明技术方案的具体实施,在应用具体实施之前,需要一些必要的准备工作。具体有,搭建大数据平台、部署平台对外服务。其中,包括基本的服务组件:hadoop服务、hbase数据库、spark内存计算框架、物联网终端设备数据接收服务程序、物联网大数据平台对外查询服务程序等。具体实施过程包括数据入库与数据查询数据入库具体包括:s1、在大数据平台的hbase数据库中创建对应每一种物联网设备的hbase表,不同的物联网设备的数据会存储在对应的hbase表中。hbase表名依据终端类型名生成,例如realdata_signal_pump_truck表代表泵车终端数据表,其中realdata_signal_为表名固定前缀,pump_truck代表泵车终端。根据项目编号、经纬度信息、信号量编码等构建hbase表的字段信息。s2、物联网设备上的数据接收服务程序获取采集程序发送过来的终端数据与采集数据,其中,终端数据包括终端类型名、终端编号与项目编号;采集数据包括采集时间戳、信息量编码与车辆实时的经纬度信息,信息量编码用于证明采集的有效数据是经纬度信息。随后将上述终端数据与采集数据发送至消息队列中做一层缓存,以免数据未能及时入hbase库造成数据的丢失。此时,大数据平台会启动一个常驻进程(一直运行的程序),该进程负责监控消息队列中是否有未消费的数据记录。按照先进先出的原则,常住进程根据终端数据与采集数据生成对应的rowkey,生成对应的rowkey具体包括:s21、以项目编号反转后的字符串作为rowkey的前缀;s22、以终端编号反转后的字符串作为rowkey的第二个部分;s23、以采集时间戳构成rowkey的第三个组成部分;s24、以随机数作为rowkey的尾缀,使数据尽量分散到不同的region(region是hbase数据库数据存储的载体单元,可以分布在不同的集群数据节点上,并且一个数据节点可以包含多个region),避免热点问题。rowkey尾部添加随机数还可以有效的避免数据高并发情况下,rowkey重复的问题。其中,owkey尾部添加随机数即为自然数,如001,012,532等。s3、hbase表创建完成以及生成rowkey后,常驻进程调用hbase库的服务接口将步骤1中的rowkey与对应车辆的经纬度信息以及采集时间戳录入hbase数据库。s4、循环步骤s2、s3,将更多的泵车终端位置信息数据顺时存入hbase数据库;数据查询具体包括:s5、应用端向大数据平台发起查询申请,将spark根据查询申请中包含的查询条件抽取hbase数据库中的数据并存入弹性分布式数据集hbaserdd,其中,查询条件包括项目编号、终端编号、采集的起始时间与结束时间中的一个或多个组合,查询条件具有默认值,即满足所有的查询条件。spark根据查询条件抽取hbase数据库中的数据并存入弹性分布式数据集hbaserdd具体包括:s51、根据hbase数据库的集群信息(集群服务器ip地址、端口号等)以及配置信息(数据存储hdfs分布式文件系统路径等)构建hbase的配置对象、根据spark集群信息以及配置信息(主节点等)sparkcontext上下文对象;s52、根据hbase的配置对象与sparkcontext上下文对象构建hbasecontext对象;s53、根据查询条件构建hbase查询扫描器scan的起始rowkey和结束rowkey,其中,起始rowkey和结束rowkey的构建过程与步骤s11-s14相同,起始rowkey的尾缀为000,结束rowkey的尾缀为999;s54、根据起始rowkey和结束rowkey构造hbase查询扫描器scan;s55、hbase查询扫描器scan调用步骤s52构建的hbasecontext对象的hbasescanrdd方法,抽取hbase数据库中的数据并存入弹性分布式数据集hbaserdd。s6、大数据平台利用spark内存计算技术对弹性分布式数据集hbaserdd进行处理,获取查询的结果数据,大数据平台将结果数据返回至应用端。其中,大数据平台利用spark内存计算技术对弹性分布式数据集hbaserdd进行处理具体包括:s61、通过spark内置的算子对弹性分布式数据集hbaserdd进行清洗、转换,剔除项目编号、终端类型、信号量编码等无关紧要的信息,将采集时间由时间戳形式转成目标时间格式(yyyy年mm月dd日hh时mm分ss秒),获取车辆的经纬度信息以及该经纬度信息对应的采集时间,得到结构化数据集result;s62、构造与步骤s61中结构化数据集result相匹配的数据结构体。例如:s63、根据步骤s61获取的结构化数据集与步骤s62定义的数据结构体构建dataframe数据集合,将dataframe数据集合注册到一张内存数据表。例如:valresultinfo=sql.createdataframe(result,schema)peopleinfo.registertemptable("temptable")s64、调用sparksql的sql方法传入sql执行语句对步骤s63构造的内存数据库表temptable中的数据进行统计分析操作。统计某台泵车一段时间内总共出现在了几个地方,在每个地方分别停滞的时间时长等。s65、调用sparkmllib的机器学习库中的预测算法,传入步骤s63构造的dataframe数据集合以及预测算法对应的参数,可以预测某台泵车未来的运动轨迹趋势。s66、调用spark的持久化函数将步骤s64或者步骤s65处理的结果集保存到hdfs分布式文件系统,提供给泵车应用系统进行查询。本实施例通过利用hbase数据库来存储物联网终端历史数据,设计了合适的rowkey结构,结合hbase库依据rowkey存储的规则,实现了数据的高效存储,有效的解决了大数据量情况下的高频入库和查询问题,并兼顾了系统的可扩展性和数据负载均衡问题,相对于传统关系型数据库,利用分布式数据库hbase作为海量物联网终端数据的存储库,会使企业成本更加低廉;基于spark内存计算框架的高性能数据处理以及数据处理灵活的特性,利用spark内存计算技术来对物联网终端数据进行计算处理,有效的提高了数据处理、计算的性能,对比传统关系型数据库和离线计算框架mapreduce,spark的处理速度更快,响应时间更短。而且spark编程基于函数式编程语言scala,采用scala语言编写数据处理程序更加简洁、高效。以上包含了本发明优选实施例的说明,这是为了详细说明本发明的技术特征,并不是想要将
发明内容限制在实施例所描述的具体形式中,依据本
发明内容主旨进行的其他修改和变型也受本专利保护。本
发明内容的主旨是由权利要求书所界定,而非由实施例的具体描述所界定。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1