本发明专利技术涉及一种基于Spark流式分类的电力窃电用户识别方法。本发明专利技术利用Nginx实时收集来自电力系统的用户数据,并把全部数据传输至kafka集群队列。Spark Streaming会实时消费kafka集群队列里的数据,将数据读取出进行数据的预处理,并用Spark机器学习库MLlib实现决策树算法对窃电用户数据进行自动识别。经过Spark Streaming实时计算程序分析,将结果写入到Hbase数据库,可以实时获取窃电用户。本发明专利技术能够实时的处理来自电力系统的大量用户数据,具有高强度的容错性和实时性,并通过Spark MLlib库的决策树模型准确实时的识别出窃电用户。
A Spark Flow Classification Based User Recognition Method for Electric Power Stealing
【技术实现步骤摘要】
一种基于Spark流式分类的电力窃电用户识别方法
本专利技术涉及一种基于Spark流式分类的电力窃电用户识别方法,主要针对物联网传来的海量电力用户数据进行实时处理,提高效率,属于基于云计算平台下的大数据处理
技术介绍
物联网技术和信息技术的飞速发展导致了信息资源的急剧增长,数据源产生的数据越来越多,处理数据的实时性需求越来越大,比如,早期的在网上产生的股市震荡数据或者地震预测消息是有价值的,时间长了价值就降低了。再比如,淘宝购物,系统会根据买家的日常购买信息,综合分析买家消费习性进行实时推荐,以促进消费。如何从海量的数据挖掘中挖掘出隐含的有用的信息并进行实时的分析统计引起人们越来越多的关注。目前最常用的大数据流的并行处理系统有Spark,Storm,Samza和Flink,这些系统都可以用于接收和处理实时的数据流。Spark,是一种通用的大数据计算框架,正如传统大数据技术Hadoop的MapReduce、Hive引擎,以及Storm流式实时计算引擎等。Spark包含常见的各种计算框架:比如SparkCore用于离线计算,SparkSQL用于交互式查询,SparkStreaming用于实时流式计算,SparkMLlib用于机器学习,SparkGraphX用于图计算。Hadoop的核心组件为HDFS和Mapreduce,HDFS以不同机器作为数据存储节点,Mapreduce以分而治之思想作为计算引擎,同时Mapreduce组件是以非内存和离线分析为主的计算处理,无法满足大规模的数据的实时分析和统计要求。Storm是一个基于内存计算的开源的集群计算系统,目的是让数据分析更加快速,但是它是针对每条记录的流式实时计算框架,由于每条数据都进行处理,所以吞吐量不高。
技术实现思路
本专利技术提供了一种基于Spark流式分类的电力窃电用户识别方法,本专利技术能够实时的处理来自电力系统的大量用户数据,具有高强度的容错性和实时性,并通过SparkMLlib库的决策树模型准确实时的识别出窃电用户。本专利技术利用了Nginx把收集到的电力用户数据导入Kafka集群,通过SparkStreaming的高并发特性以direct方式和kakfa集群进行整合并对数据进行预处理,利用SparkMLlib库对数据进行分类模型计算,通过流式决策树算法对采集并存储到Hbase数据库中的数据进行分析统计,分类并且识别窃电用户。本专利技术的技术方案是:一种基于Spark流式分类的电力窃电用户识别方法,通过Nginx集群作为数据采集系统,不断的接收来自电力系统的用户数据流,利用Kafka集群作为消息缓存队列服务器,接收Nginx传过来的用户数据流,通过SparkStreaming把从Kafak集群接收来的实时用户数据流分成多个数据块存放在内存里,并在间隔时间内对内存中的数据块进行批处理,Spark通过算子对离散流进行数据的预处理,并把分析处理结果写入到Hbase数据库里,利用Spark的机器学习库MLlib对Hbase数据库里的数据实现决策树建模,识别出窃电用户,并通过echarts进行可视化。进一步地,所述基于Spark流式分类的电力窃电用户识别方法的具体步骤如下:Step1、搭建Nginx集群采集数据,代替flume监听log文件夹,直接把数据导入kafka集群;具体包括:Step1.1、上传Nginx压缩包到Linux集群,并解压;进入Nginx源码目录安装gcc编译器进行预编译;Step1.2、编译安装Nginx,启动Nginx,查看Nginx的进程,验证是否开启;为Nginx集群安装nginx-kafka插件,根据kafka的配置文件,修改Nginx.conf文件,使Nginx集群与kafka集群进行结合;Step2、初始化创建SteamingContext对象,该对象中的参数包括:SparkContext和批处理时间,同时对批处理时间间隔进行参数的设置,从而找到批处理时间;Step3、利用direct方式接收kafka集群的用户数据源,并存储在SparkExecutor的内存中,之后SparkStreaming启动job对数据进行预处理,把处理之后的用户数据实时存入Hbase数据库里;Step4、使用基于Hadoop平台的SparkMLlib库对传感器数据进行分类模型计算,通过流式决策树算法对采集并存储到Hbase数据库中的数据进行分类分析,分类并且识别窃电用户的用电数据;Step5、使用创建的HTable对象中的put()函数将获取到的窃电用户数据存入到Hbase数据库,并用echarts进行可视化展示。SparkStreaming的容错机制是基于RDD的容错机制,分别为基于血统(lineage)的高度容错机制和检查点机制。血统的高度容错机制是每个RDD都是一个弹性分布式数据集,对RDD的操作产生新的RDD都会通过lineage来表达依赖关系,只要源数据丢失或者失真,或者任意一个RDD出错不可用,都可以通过原始数据进行操作计算而重新算出。检查点机制是由于lineage生命线很长,执行失败的恢复成本比较高,于是SparkStreaming周期性地把应用数据存储到诸如HDFS或AmazonS3这样的可靠存储系统中以供恢复时使用的机制叫做检查点机制。使用HBase对海量实时数据进行存储。HBase的LSM树型存储结构使其具有实时读写数据的功能。SparkStreaming向HBase写入数据时对每一条数据执行插入操作,采用输出方法foreachRDD(func),将func(此处指将数据插入HBase表格)作用于数据流的每一个RDD(ResilientDistributedDatasets弹性分布式数据集)。在进行数据写入时对数据流执行foreachRDD与foreachPartition操作,为每个分区创建一个cTable对象,提高数据读写效率。使用Spark机器学习中的SparkMLlib库对Hbase数据进行分类模型计算,流式决策分类算法包含训练以及预测两个部分,核心思想是先根据已经积累的历史数据训练出模型,然后根据历史数据推导的模型对新到的实时监测数据进行识别。通过使用MLlib算法组件,在Spark平台中实现决策树分类流程如下:(1)特征选取,即从众多特征中选择出一个作为当前节点的分类标准。(2)决策树生成,从上到下构建节点,形成一棵倒立的树。(3)剪枝,消除过拟合,需要对决策树剪枝。本专利技术的有益效果是:本专利技术能够实时的处理来自电力系统的大量用户数据,具有高强度的容错性和实时性,并通过SparkMLlib库的决策树模型准确实时的识别出窃电用户。附图说明图1是本专利技术集群系统架构图。图2是本专利技术所述的系统原理流程图。图3是本专利技术所述的SparkStreaming写入Hbase工作流程图。图4是SparkML决策树分类算法流程图。具体实施方式实施例1:如图1-4所示,一种基于Spark流式分类的电力窃电用户识别方法,通过Nginx集群作为数据采集系统,不断的接收来自电力系统的用户数据流,利用Kafka集群作为消息缓存队列服务器,接收Nginx传过来的用户数据流,通过SparkStreaming把从Kafak集群接收来的实时用户数据流分本文档来自技高网...
【技术保护点】
1.一种基于Spark流式分类的电力窃电用户识别方法,其特征在于:通过Nginx集群作为数据采集系统,不断的接收来自电力系统的用户数据流,利用Kafka集群作为消息缓存队列服务器,接收Nginx传过来的用户数据流,通过Spark Streaming把从Kafak集群接收来的实时用户数据流分成多个数据块存放在内存里,并在间隔时间内对内存中的数据块进行批处理,Spark通过算子对离散流进行数据的预处理,并把分析处理结果写入到Hbase数据库里,利用Spark的机器学习库MLlib对Hbase数据库里的数据实现决策树建模,识别出窃电用户,并通过echarts进行可视化。
【技术特征摘要】
1.一种基于Spark流式分类的电力窃电用户识别方法,其特征在于:通过Nginx集群作为数据采集系统,不断的接收来自电力系统的用户数据流,利用Kafka集群作为消息缓存队列服务器,接收Nginx传过来的用户数据流,通过SparkStreaming把从Kafak集群接收来的实时用户数据流分成多个数据块存放在内存里,并在间隔时间内对内存中的数据块进行批处理,Spark通过算子对离散流进行数据的预处理,并把分析处理结果写入到Hbase数据库里,利用Spark的机器学习库MLlib对Hbase数据库里的数据实现决策树建模,识别出窃电用户,并通过echarts进行可视化。2.根据权利要求1所述的基于Spark流式分类的电力窃电用户识别方法,其特征在于:所述基于Spark流式分类的电力窃电用户识别方法的具体步骤如下:Step1、搭建Nginx集群采集数据,代替flume监听log文件夹,直接把数据导入kafka集群;具体包括:Step1.1、上传Nginx压缩包到Linux集群,并解压;进入Nginx源码目录安装gcc编译器进行预编译;Ste...
【专利技术属性】
技术研发人员:吴晟,舒珏淋,
申请(专利权)人:昆明理工大学,
类型:发明
国别省市:云南,53
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。