发明内容
本发明的目的在于提供基于大数据处理用电表码数据的方法、装置和存储介质,其能够基于大数据提升用电表码数据处理效率和存储性能。
为实现上述目的,本发明提供了一种基于大数据处理用电表码数据的方法,包括以下步骤:
S1:对表码原始采集数据进行实时异常甄别;
S2:对异常数据进行修复,并将修复后的表码数据分别保存/更新到缓存和NoSQL存储,原始采集数据保存/更新到NoSQL存储;
S3:将档案数据从关系型数据库中预加载到缓存,根据业务需求定期更新缓存中的档案数据;
S4:基于修复后表码数据,开展实时电量计算,并且将电量计算结果分别保存/更新到缓存和NoSQL存储;
S5:在NoSQL库中将修复后数据预加载到内存中,生成结构化内存表,利用内存表关联能力在内存中完成多表关联数据检索;
S6:基于多表关联检索的表码数据,进行批量电量计算,并将新增和变化的数据保存/更新到缓存和NoSQL存储;
S7:将电量结果数据由NoSQL存储同步到关系型数据库。
在本发明的一实施方式中,所述步骤S1中,电量异常甄别为对电表倒走和飞走进行判断,对电表停走不进行判断。
在本发明的一实施方式中,所述步骤S2中,当天采集有缺失部分节点,但有同期历史电量数据情况下,异常数据进行修复方法如下:
连续时间点内缺点数小于等于2个点时,取该计量点表计缺点区间内前后时间点的区间电量的算术平均值做为电量拟合值;
连续时间点内缺点数大于2个点时,按照工作日、双休日、国家法定节假日分类拟合电量;
缺少24:00点表码时,当连续时间点内缺点且含24:00时,如果为工作日、双休日,则按照前推4个同期日,以各点电量的平均值进行拟合;如果为法定节假日,则按去年同类型节假日区间数据拟合,无历史类比数据的区分大小长假,按上一个大小长假数据拟合;
缺少00:00点表码时,当连续时间点内缺点含00:00时,对于00:00时数据不再重复拟合;对于连续时间点内其他缺点电量,以及当天首个抄见表码的电量,分类拟合,其中,工作日、双休日按照前推4个同期日,以各点电量的平均值进行拟合;法定节假日按去年同类型节假日区间数据拟合,无历史类比数据的区分大小长假,按上一个大小长假数据拟合。
在本发明的一实施方式中,所述步骤S2中,当天采集有缺失部分节点,无同期日历史电量数据但有环比日电量数据情况下,异常数据进行修复方法如下:
当天采集有缺失部分节点,无同期日历史电量数据但有环比日电量数据时,电量拟合按环比比例拟合;若环比电量缺失且影响拟合计算。
在本发明的一实施方式中,所述步骤S2中,当天采集有缺失部分节点,无同期日历史电量数据情况下,异常数据进行修复方法如下:
当天采集有缺失部分节点,无同期日历史电量数据也无环比日电量数据时,电量拟合按成功节点间的等分的算术平均值进行拟合。
在本发明的一实施方式中,修复后的数据和电量计算结果在缓存中保留周期为3~7天。
在本发明的一实施方式中,表码原始采集数据的异常甄别和电量计算均采用了Kafka+Storm+Redis+HBase的计算框架来实现。
在本发明的一实施方式中,所述步骤S7中,关系型数据库中只存储6~12个月的数据,其他数据迁移到大数据集群中进行存储;在大数据存储集群中,NoSQL存储保存2~3年数据,Hive保存全量数据。
本发明还提供了一种基于大数据处理用电表码数据的装置,包括:异常数据处理模块、数据更新模块、数据更新模块和数据同步模块;
所述异常数据处理模块,用于对表码原始采集数据进行实时异常甄别,并且对异常数据进行修复,并将修复后的表码数据分别保存/更新到缓存和NoSQL存储,原始数据保存/更新到NoSQL存储进行归档;
数据更新模块,用于将档案数据从关系型数据库中预加载到缓存,根据业务需求定期更新缓存中的档案数据,并且基于修复后表码数据,开展实时电量计算,并且将电量计算结果分别保存/更新到缓存和NoSQL存储;
数据更新模块,用于在NoSQL库中将修复后数据预加载到内存中,生成结构化内存表,利用内存表关联能力在内存中完成多表关联数据检索,以及基于多表关联检索的表码数据,进行批量电量计算,并将新增和变化的数据保存/更新到缓存和NoSQL存储;
数据同步模块,用于将电量结果数据由NoSQL存储同步到关系型数据库。
本发明还提供了一种存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现根据上述一种基于大数据处理用电表码数据的方法的步骤。
与现有技术相比,根据本发明的基于大数据处理用电表码数据的方法、装置和存储介质,具备以下优点:
1、将计算任务从关系型数据库中剥离,基于大数据计算能力处理业务计算任务,可有效释放关系型数据库的资源,提升其整体性能及稳定性,方便其更好的为业务系统提供支撑;
2、基于大数据实时计算组件,可以有效满足海量数据实时计算任务的需求,针对单条数据处理速度可达到亚秒级;
3、基于大数据Spark+Impala批量计算方案,可有效解决NoSQL存储不支持结构化复杂关联查询问题,有效提升批量计算任务处理速度;
4、将数据按照使用频度,分别存放到不同存储介质,一方面能够可有效提升数据的检索效率,另一方面能够有效解决海量数据管理的需求。
具体实施方式
下面结合附图,对本发明的具体实施方式进行详细描述,但应当理解本发明的保护范围并不受具体实施方式的限制。
除非另有其它明确表示,否则在整个说明书和权利要求书中,术语“包括”或其变换如“包含”或“包括有”等等将被理解为包括所陈述的元件或组成部分,而并未排除其它元件或其它组成部分。
如图1所示,根据本发明优选实施方式的基于大数据处理用电表码数据的方法,应用于用电信息采集系统中,并且在关系型数据库中利用大数据平台进行实现,包括以下步骤:
S1:对表码原始采集数据进行实时异常甄别。
具体地,利用大数据实时计算组件,根据异常诊断规则,对表码原始采集数据进行实时异常甄别。
其中,对数据进行异常甄别的规则如下:
1)电表倒走:电能表示值下表底比上表底值大,则为负电量,其原因可能为下表底倒走或者上表底飞走也可能为电表清零,总之,负电量必有异常,会影响其线损以及算费等业务,需要剔除。其判断标准为:(下表底-上表底)*综合倍率<0。
2)电表飞走:电能表示值下表底比上表底大很多,乘以综合倍率后则为超阈值电量,这个阈值一般为电能表的量程*24小时*0.8,其中0.8为经验值,可根据各单位不同采集情况自行设定。其原因可能为上表底倒走或者下表底飞走跳变也可能为电表清零,总之,电量超大多为异常,会影响其线损以及算费等业务,需要剔除。其判断标准为:(下表底-上表底)*综合倍率>电能表的量程*24小时*0.8。
3)电表停走由于不以电量为0作为衡量标准,以电能表异常为标准,所以不在此处详述。
综上,电量异常甄别主要为电表倒走、飞走引起的电量过大与负电量的判断、电表停走不判断。
上述的异常甄别规则与电量计算功能结合,是电量计算的校验和补充,与电量计算共同使用Kafka+Storm+Redis+HBase来实现。
S2:对异常数据进行修复,并将修复后的表码数据分别保存/更新到缓存和NoSQL存储,原始采集数据保存/更新到NoSQL存储进行归档。
具体地,利用大数据实时计算组件,对异常数据进行修复,并将修复后数据分别保存/更新到缓存和NoSQL存储,原始数据保存/更新到NoSQL存储进行归档;为了提升数据计算效率,修复后的数据在缓存中保留周期为3~7天。
具体地,针对异常数据的修复过程,其具体包括以下几种修复规则:
(一)、当天采集有缺失部分节点,但有同期历史电量数据情况下,异常数据进行修复方法如下:
1、连续时间点内缺点数小于等于2个点时(非00:00时间节点),取该计量点表计缺点区间内前后时间点的区间电量的算术平均值做为电量拟合值。
2、连续时间点内缺点数大于2个点时,按照工作日、双休日、国家法定节假日(小长假(元旦、五一、清明等)、大长假(春节、国庆))分类拟合电量。
2.1、如果缺点时间段区间在工作日内,前推4个同期工作日数据的平均值进行拟合处理,当前推4个同期工作日中有国家法定节假日时,则跳过该节假日继续前推;若4个同期工作日中有数据缺失,则以4个同期工作日中的实际有效数据平均处理。
2.2、如果缺点时间段区间在双休日内,前推4个同期双休日数据的平均值进行拟合处理,当前推4个同期双休日中有国家法定节假日或调休日时,则跳过该节假日或调休日继续前推;若4个同期双休日中有数据缺失,则以4个同期双休日中的实际有效数据平均处理。
2.3、如果缺点时间段区间在法定节假日内,按去年同类型节假日区间数据拟合处理。无历史类比数据的区分大小长假,参照上一个大小长假数据拟合处理。
3、缺少24:00点表码时的处理规则:当连续时间点内缺点且含24:00时,如果为工作日、双休日,则按照前推4个同期日,以各点电量的平均值进行拟合;如果为法定节假日,则按去年同类型节假日区间数据拟合,无历史类比数据的区分大小长假,按上一个大小长假数据拟合。
4、缺少00:00点表码时的处理规则:当连续时间点内缺点含00:00时,对于00:00时数据不再重复拟合;对于连续时间点内其他缺点电量,以及当天首个抄见表码的电量,分类拟合,其中,工作日、双休日按照前推4个同期日,以各点电量的平均值进行拟合;法定节假日按去年同类型节假日区间数据拟合,无历史类比数据的区分大小长假,按上一个大小长假数据拟合。
(二)、当天采集有缺失部分节点,无同期日历史电量数据但有环比日电量数据情况下,异常数据进行修复方法如下:
当天采集有缺失部分节点,无同期日历史电量数据但有环比日电量数据时(含新装用户),电量拟合按环比比例拟合;若环比电量缺失且影响拟合计算。
(三)、当天采集有缺失部分节点,无同期日历史电量数据情况下,异常数据进行修复方法如下:
当天采集有缺失部分节点,无同期日历史电量数据也无环比日电量数据时(含新装用户),电量拟合按成功节点间的等分的算术平均值进行拟合。
(四)、当天采集均失败无任何节点表码或仅有1个节点表码情况下,异常数据进行修复方法如下:
当天采集均失败无任何节点表码或仅有1个节点表码时,经核实确因计划停电造成的,无需电量拟合。经核实确因计量装置故障造成,则按以上规则(一、二、三)进行拟合。
(五)、因暴雨(雪)、地震等自然灾害、用户自停等原因无法及时获知用户实际现场是否正常用电情况下,异常数据进行修复方法如下:
因暴雨(雪)、地震等自然灾害、用户自停等原因无法及时获知用户实际现场是否正常用电情况,按照以上规则照常以工作日、双休日、节假日进行拟合。
在本发明中,针对异常数据使用spark+HBase数据进行计算,其主要利用以下特点:
1.快:与Hadoop的MapReduce相比,Spark基于内存的运算要快100倍以上;而基于磁盘的运算也要快10倍以上。Spark实现了高效的DAG执行引擎,可以通过基于内存来高效地处理数据流。
2.通用性:Spark提供了统一的解决方案。Spark可以用于批处理、交互式查询(通用Spark SQL)、实时流处理(通过Spark Streaming)、机器学习(通过Spark MLlib)和图计算(通过Spark GraphX)。
这些不同类型的处理都可以在同一应用中无缝使用。Spark统一的解决方案使用统一的平台处理问题,可以减少开发和维护的人力成本和部署平台的物理成本。
S3:将档案数据从关系型数据库中预加载到缓存,根据业务需求定期更新缓存中的档案数据。其中,更新的期限视实际使用情况而定。
S4:基于修复后表码数据,开展实时电量计算,并且将电量计算结果分别保存/更新到缓存和NoSQL存储。
具体地,利用大数据实时计算组件,基于修复后表码数据,开展实时电量计算,将电量计算结果分别保存/更新到缓存和NoSQL存储;为了提升数据计算效率,电量计算结果在缓存中保留周期为3~7天。
S5:在NoSQL库中将修复后数据预加载到内存中,生成结构化内存表,利用内存表关联能力在内存中完成多表关联数据检索。
S6:基于多表关联检索的表码数据,进行批量电量计算,并将新增和变化的数据保存/更新到缓存和NoSQL存储。
具体地,利用大数据批量计算组件实现批量电量计算,将计算结果与缓存中保留的历史结果进行比对,针对新增和发生变化的数据保存/更新到缓存和NoSQL存储。
电量计算的理论公式为(下表底-上表底)*倍率,其中,上表底、下表底为电表的日冻结表码,包含正向有功总PAP_R、反向有功总RAP_R、正向无功总PRP_R、反向无功总RRP_R以及其分费率的日冻结电能示值。倍率是指其综合倍率T_FACTOR如无综合倍率需使用T_FACTOR=CT*PT。
当前置系统采集到一条表码数据时,根据其日期t,分别计算各个项(t日表码-(t-1)日表码)*综合倍率和((t+1)日表码–t日表码)*综合倍率两个电量从而进入电量异常甄别流程。
为了满足电量计算的时效性要求以及便于扩展针对电量、表码的异常甄别和数据清洗功能,本发明的电量计算采用了Kafka+Storm+Redis+HBase的计算框架来实现。
Kafka具备消息系统的优点,只要生产者和消费者数据两端遵循接口约束,就可以自行扩展或修改数据处理的业务过程。并且,能够保证分区内表码数据的先后顺序,吞吐量大,容错性高,适合高频采集场景。Kafka支持Java、NET、PHP、Python等多种户端语言。支持不同业务的数据接入,并且与大数据各个框架兼容性好。
Storm中的topology-worker结构逻辑易扩展,便于功能更新迭代。并且Storm的优点是全内存计算,所以它的定位是分布式实时计算系统,流式计算模式,延迟低,按每表码采集每条触发计算,抽象逻辑贴近实际采集的逻辑,准确性及时性高。
Redis+Hbase中,HBase本身的缓存是基于Block(即BlockCache),而Redis中的缓存是基于Key的,作用不同;组合中Redis还可以用作存储,将写入性能发挥到极致。Redis作为Hbase的缓冲可以减轻Hbaae事务压力同时使数据写入可以严格按照时间顺序处理。
S7:将电量结果数据由NoSQL存储同步到关系型数据库。
具体地,通过大数据同步工具定时将电量结果数据由NoSQL存储同步到关系型数据库。
其中,关系型数据库中只存储6~12个月的数据,其他数据迁移到大数据集群存储;在大数据存储集群中,NoSQL存储保存2~3年数据,Hive保存全量数据。
此外,如图2所示,本发明还公开了一种基于大数据处理用电表码数据的装置,应用于用电信息采集系统中,并且在关系型数据库中利用大数据平台进行实现,具体地,该装置能够应用上述基于大数据处理用电表码数据的方法的步骤对表码数据进行处理。该装置包括:异常数据处理模块1、数据更新模块2、数据更新模块3和数据同步模块4。
异常数据处理模块1,用于对表码原始采集数据进行实时异常甄别,并且对异常数据进行修复,并将修复后的表码数据分别保存/更新到缓存和NoSQL存储,原始数据保存/更新到NoSQL存储进行归档。
数据更新模块2,用于将档案数据从关系型数据库中预加载到缓存,根据业务需求定期更新缓存中的档案数据,并且基于修复后表码数据,开展实时电量计算,并且将电量计算结果分别保存/更新到缓存和NoSQL存储。
数据更新模块3,用于在NoSQL库中将修复后数据预加载到内存中,生成结构化内存表,利用内存表关联能力在内存中完成多表关联数据检索,以及基于多表关联检索的表码数据,进行批量电量计算,并将新增和变化的数据保存/更新到缓存和NoSQL存储。
数据同步模块4,用于将电量结果数据由NoSQL存储同步到关系型数据库。
基于同样的发明构思,一实施方式中还提供了一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述一实施方式所述的基于大数据处理用电表码数据的方法的步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
前述对本发明的具体示例性实施方案的描述是为了说明和例证的目的。这些描述并非想将本发明限定为所公开的精确形式,并且很显然,根据上述教导,可以进行很多改变和变化。对示例性实施例进行选择和描述的目的在于解释本发明的特定原理及其实际应用,从而使得本领域的技术人员能够实现并利用本发明的各种不同的示例性实施方案以及各种不同的选择和改变。本发明的范围意在由权利要求书及其等同形式所限定。