论文部分内容阅读
中图分类号:F407文献标识码: A
供电行业是传统的基础行业,负责民用、企业用电,和百姓和企业息息相关,但是一直以来供电行业都只停留在供电基础建设,各行各业都提倡以人为本,客户为中心,作为供电局怎么才能提供更好、更人性化的服务呢?在当前互联网发展飞速发展的今天,大数据作为当前最为火热的技术,是不是能在供电行业提供些帮助和思路,指导供电行业也紧跟时代更好的服务大众,使供电业也更好的信息化?
每个人每天,甚至每时每刻都离不开电,大到公司,小到个人,和生活息息相关。每时每刻都会产生大量的数据,这些数据有如下特点,信息量大,数据分散多样,同时也有重要指导、分析的价值。
数据的价值
这些海量的数据,每时每刻都在产生,而且多样性,但是具有统计和指导意义。
一、决策指导意义
1.行业用电统计指导
通过收集的这些基础数据,可以针对民用、企业用电指标进行分析,以及企业行业用电分布进行统计,这样可以对用电大、耗能高的企业提出改造建议,做好节能减排,同时便用监控、管理,对于用电高峰期的处理提出指导意见。
2.区域用电指导
在海量的用电数据的统计分析基础上,可以明显直观的查看市区不同区域的用电情况,哪些区域用电大,哪些区域用电小,用电大的地区对基础用电设施的冲击和压力有多大。
3.时段用电指导
对这些基础的用电信息同时可以按照时段对数据聚合,进而分析统计,产生时段,大到年用电分布,小到每天的用电分布,便于分析年用电的高峰期和天的高峰期,便于供电局对电网的管理。
4.电价的指导
通过上面的统计分析产生了不同维度的统计数据,这些数据对于管理、运营电业的部门提供的指导意义,同时可以通过阶段电价的经济杠杆调节用电高峰期和低谷期的波形,减轻用电压力,高效利用电资源。
二、监控预测意义
上面通过对基础的海量、随机数据统计分析产生了历史曲线分布数据,可以对现在和未来可以产生积极的预测功能。
1.企业的用电数据虽然短时间是随机波动的,但是在大一点的时段统计,数据是有规律的,而且基本上偏差幅度都在比较小的范围波动,那么如果当前的某段时间数据和历史数据出入过大,那么可以针对这些异常的波动提出预警,通过邮件或者短信的方式通知供电局管理人员,这些异常的波动往往暗示企业用电的异常情况,或者线路的异常,可以加强供电局对企业用电的监管,有效的、及时的发现问题,减少损失。
2.这些统计数据同时可以提供给大到企业小到个人,提供多终端的查询,例如个人用户可以使用手机随时随地查看自己用电情况,什么时间用电多,什么时候用电少,对于那些费电不节能的电器的淘汰,及时了解剩余电量,并及时购买充值提供指导意义。对于企业,企业的负责人可以更好的了解企业的用电成本,控制成本。这些服务可以让用户感觉更为直观、可信,对供电局的服务更加满意。
3.统计数据同时可以对未来产生积极、有效的预测功能,让供电管理部门提前做好准备工作。例如,通过分析,发现南方某城市每年从6月中旬开始用电逐渐增加,七月份达到负载高峰,可以提前通过行政手段减轻用电压力,同时可以通过经济手段调节用电,减轻用电负荷。
三、成本的意义
由于采用了现代电子和互联网技术,对于数据实时采集,也可以减少大量的人工成本,做到数据的及时可靠、完整,同时由于对这些海量数据进行了有效的数据统计和分析,用于指导工作和预警,也减少了不必要的损失和成本,对于提高利润有积极的作用。
NOSQL在大数据的应用
Nosql是相对于传统的关系型数据库而言的,两者存在许多显著的不同点,其中最重要的是NoSQL不使用SQL作为查询语言。其数据存储可以不需要固定的表格模式,也经常会避免使用SQL的JOIN操作。当代典型的关系数据库在一些数据敏感的应用中表现了糟糕的性能,例如为巨量文档建立索引,对海量数据的高效率存储和访问的需求,对数据库的高可扩展性和高可用性的需求。NoSQL 是非關系型数据存储的广义定义。它在处理海量数据有着独特的优势,nosql数据库的出现就是为了满足这一需求,它可以处理海量的数据,可以很容易的分布式的运行于价格低廉的pc机上,它的性能很好,避免了影响性能的一些操作。同时提供灵活的数据模型给松散结构数据的存储提供了便利、有效的存储方案。
可能会问为什么使用nosql而不采用关系型数据库呢?因为关系型数据库在海量数据面前有些力不从心,前面已经提到,它在扩分布式,高速,海量数据的处理天生就是弱项。
ElasticSearch是一个基于Lucene构建的开源,分布式,RESTful搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。支持通过HTTP使用JSON进行数据索引。
ElasticSearch有如下特点:
1.集群
集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的。ElasticSearch是去中心化的, 客户端与任何一个节点的通信和与整个ElasticSearch集群通信是等价的,但是在集群内部有一个选举产生的主节点。
2.分片
代表索引分片,ElasticSearch可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上,构成分布式搜索,达到高性能的需求。分片的数量只能在索引创建前指定,并且索引创建后不能更改。
3.副本
在索引创建时,可以指定副本的数量,这样通过启动多个ElasticSearch的实例,将索引在多个ElasticSearch实例中分布索引副本,达到容灾、高可用的需求。同时由于索引分布到不同的节点中,当获取数据时,ElasticSearch集群会将请求分布到集群不同节点,达到负载均衡的目的。
4.恢复
集群节点中有节点故障退出集群,或者有新节点加入集群时,ElasticSearch会自动的对数据进行复制、恢复、自动分布。
5.发现
ElasticSearch是基于p2p协议的分布式系统,它会根据配置的集群节点名称和网络配置自动发现新加入的节点,并将新节点自动加入集群,ElasticSearch的集群是相当简单的,只需做简单的配置即可,可以降低构建分布式系统成本。
ElasticSearch在供电局应用浅析
一、系统架构
如图所示,架构分为两部分
1.原始基础数据涉及到硬件用电数据采集设备,接口数据服务器集群,以及数据存储的Elasticsearch的集群,这部分主要负责原始数据的采集和存储。
2.针对原始数据不同纬度的数据统计分析服务器,运营决策服务器等,通过web方式提供给多个部门,多个终端用户查看、使用。
二、基础数据收集
Elasticsearch是支持单条数据添加、更新的,考虑到电业局的具体情况,数据量比较大,多采集终端采集数据,以及性能问题,我们采取将采集的数据放入队列,再将队列中的数据批量,分次的导入到elasticsearch中,elasticsearch提供了批量数据的插入api,我们使用java客户端,批量插入的方式如下
BulkRequestBuilder bulkRequest = client.prepareBulk();
bulkRequest.add(client.prepareIndex("index", "type", "id")
.setSource( dataJSONStr )
);
......
bulkRequest.add(client.prepareIndex("index", "type", "id")
.setSource( dataJSONStr )
);
BulkResponse bulkResponse = bulkRequest.execute().actionGet();
通过这样的方式可以高效的存储用电数据,构建基础的数据仓库。
三、基础数据的统计、分析
针对上面收集到的数据结合电业局的具体使用,可以通过下面数据进行分析。
1.基于数据的地理位置分析
2.基于数据的来源,是民用还是企业,企业的性质
3.基于数据的时间分析
4.针对单一的企业用户的时间维度的分析
针对上面的需求分析,我们可以定义基础的实体结构
elasticsearch提供对数据统计分析的功能有facets和aggregations两种方式,在elasticsearch的1.0版本开始支持新的统计方式,即Aggregations方式,可以提供min、max、sum、avg、histogram等等新的统计方式。下面给出针对上面所说的四种分析方式elasticsearch的简易实现方式。
1.针对地理位置的统计分析,可以按照分析的实际分析维度需要进行分析,下面给出一个小时时间段的针对地理位置的java客户端实现代码。
//获取搜索请求
SearchRequestBuilder sb = SearchUtils.getDefaultSearchRequestBuilder( esClient, index, type_access_base);
//建立区间过滤
RangeFilterBuilder rf = new RangeFilterBuilder("createDate");
rf.gte(startStr);
rf.lt(end);
sb.addAggregation(AggregationBuilders
.filter("rangFilter")
.filter(rf)
.subAggregation(
AggregationBuilders
.terms("addrTerm")
.field("addr")));
SearchResponse response = sb.execute().actionGet();
//对查询数据结果获取需要的数据
Aggregations aggrs = response.getAggregations();
InternalAggregations in = ag.getAggregations();
StringTerms st = in.get("addrTerm");
for (Bucket bt : st.getBuckets()) {
Map map = new HashMap<>();
map.put("addr", bt.getKey());
map.put("addrCount", bt.getDocCount());
}
通過上面的代码即可获取到某一时段的不同区域的数据统计的结果,可能有人说用关系型数据库也可而且比这个还方便,为什么用elasticsearch呢?答案是,当数据比较少比如几百万的情况下,他们是可以的,但是在几十亿数据的条件下,他们就不行了,做一个聚合有可能需要的时间是难以想象和忍受的。
2.针对数据来源的统计,可以将上面的代码统计的字段改为来源的字段即可,即.field("addr")中的addr修改为需要的字段即可
3.针对时间的统计分析可以使用facets,facets提供一个 histogram facets的方式,可以设置不同的时间间隔对指定字段进行聚合统计。下面由于篇幅原因就不给出java客户端实现方式,给出rest的调用方式
{"query" : {
"match_all" : {}
},
"facets" : {
"histo1" : {
"histogram" : {
"field" : "field_name",
"time_interval" : "1.5h"
}
}
}
}
其中field指定需要统计的字段名称,time_interval指定时间间隔,可以是小时,天,更多参数请参见官方文档。
4.针对单一企业用户可以首先对数据过滤然后对过滤的数据进行histogram facets的统计聚合。
大数据在供电局中使用的展望
数据的积累就是原始的财富的积累,通过在这些数据的分析可以产生很多实际的有价值的东西,避免凭直觉和经验判断、做事。做到真正的有数据支撑,有效准确的决策支撑。
通过对数据的分析可以为家庭用户提供更好的服务,更方便的用户进行自助服务,提供信息化的渠道,减少供电局不必要的人力成本。
同时可以针对行业,提供行业云解决方案,更好的推进全局的信息化和云建设。
供电行业是传统的基础行业,负责民用、企业用电,和百姓和企业息息相关,但是一直以来供电行业都只停留在供电基础建设,各行各业都提倡以人为本,客户为中心,作为供电局怎么才能提供更好、更人性化的服务呢?在当前互联网发展飞速发展的今天,大数据作为当前最为火热的技术,是不是能在供电行业提供些帮助和思路,指导供电行业也紧跟时代更好的服务大众,使供电业也更好的信息化?
每个人每天,甚至每时每刻都离不开电,大到公司,小到个人,和生活息息相关。每时每刻都会产生大量的数据,这些数据有如下特点,信息量大,数据分散多样,同时也有重要指导、分析的价值。
数据的价值
这些海量的数据,每时每刻都在产生,而且多样性,但是具有统计和指导意义。
一、决策指导意义
1.行业用电统计指导
通过收集的这些基础数据,可以针对民用、企业用电指标进行分析,以及企业行业用电分布进行统计,这样可以对用电大、耗能高的企业提出改造建议,做好节能减排,同时便用监控、管理,对于用电高峰期的处理提出指导意见。
2.区域用电指导
在海量的用电数据的统计分析基础上,可以明显直观的查看市区不同区域的用电情况,哪些区域用电大,哪些区域用电小,用电大的地区对基础用电设施的冲击和压力有多大。
3.时段用电指导
对这些基础的用电信息同时可以按照时段对数据聚合,进而分析统计,产生时段,大到年用电分布,小到每天的用电分布,便于分析年用电的高峰期和天的高峰期,便于供电局对电网的管理。
4.电价的指导
通过上面的统计分析产生了不同维度的统计数据,这些数据对于管理、运营电业的部门提供的指导意义,同时可以通过阶段电价的经济杠杆调节用电高峰期和低谷期的波形,减轻用电压力,高效利用电资源。
二、监控预测意义
上面通过对基础的海量、随机数据统计分析产生了历史曲线分布数据,可以对现在和未来可以产生积极的预测功能。
1.企业的用电数据虽然短时间是随机波动的,但是在大一点的时段统计,数据是有规律的,而且基本上偏差幅度都在比较小的范围波动,那么如果当前的某段时间数据和历史数据出入过大,那么可以针对这些异常的波动提出预警,通过邮件或者短信的方式通知供电局管理人员,这些异常的波动往往暗示企业用电的异常情况,或者线路的异常,可以加强供电局对企业用电的监管,有效的、及时的发现问题,减少损失。
2.这些统计数据同时可以提供给大到企业小到个人,提供多终端的查询,例如个人用户可以使用手机随时随地查看自己用电情况,什么时间用电多,什么时候用电少,对于那些费电不节能的电器的淘汰,及时了解剩余电量,并及时购买充值提供指导意义。对于企业,企业的负责人可以更好的了解企业的用电成本,控制成本。这些服务可以让用户感觉更为直观、可信,对供电局的服务更加满意。
3.统计数据同时可以对未来产生积极、有效的预测功能,让供电管理部门提前做好准备工作。例如,通过分析,发现南方某城市每年从6月中旬开始用电逐渐增加,七月份达到负载高峰,可以提前通过行政手段减轻用电压力,同时可以通过经济手段调节用电,减轻用电负荷。
三、成本的意义
由于采用了现代电子和互联网技术,对于数据实时采集,也可以减少大量的人工成本,做到数据的及时可靠、完整,同时由于对这些海量数据进行了有效的数据统计和分析,用于指导工作和预警,也减少了不必要的损失和成本,对于提高利润有积极的作用。
NOSQL在大数据的应用
Nosql是相对于传统的关系型数据库而言的,两者存在许多显著的不同点,其中最重要的是NoSQL不使用SQL作为查询语言。其数据存储可以不需要固定的表格模式,也经常会避免使用SQL的JOIN操作。当代典型的关系数据库在一些数据敏感的应用中表现了糟糕的性能,例如为巨量文档建立索引,对海量数据的高效率存储和访问的需求,对数据库的高可扩展性和高可用性的需求。NoSQL 是非關系型数据存储的广义定义。它在处理海量数据有着独特的优势,nosql数据库的出现就是为了满足这一需求,它可以处理海量的数据,可以很容易的分布式的运行于价格低廉的pc机上,它的性能很好,避免了影响性能的一些操作。同时提供灵活的数据模型给松散结构数据的存储提供了便利、有效的存储方案。
可能会问为什么使用nosql而不采用关系型数据库呢?因为关系型数据库在海量数据面前有些力不从心,前面已经提到,它在扩分布式,高速,海量数据的处理天生就是弱项。
ElasticSearch是一个基于Lucene构建的开源,分布式,RESTful搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。支持通过HTTP使用JSON进行数据索引。
ElasticSearch有如下特点:
1.集群
集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的。ElasticSearch是去中心化的, 客户端与任何一个节点的通信和与整个ElasticSearch集群通信是等价的,但是在集群内部有一个选举产生的主节点。
2.分片
代表索引分片,ElasticSearch可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上,构成分布式搜索,达到高性能的需求。分片的数量只能在索引创建前指定,并且索引创建后不能更改。
3.副本
在索引创建时,可以指定副本的数量,这样通过启动多个ElasticSearch的实例,将索引在多个ElasticSearch实例中分布索引副本,达到容灾、高可用的需求。同时由于索引分布到不同的节点中,当获取数据时,ElasticSearch集群会将请求分布到集群不同节点,达到负载均衡的目的。
4.恢复
集群节点中有节点故障退出集群,或者有新节点加入集群时,ElasticSearch会自动的对数据进行复制、恢复、自动分布。
5.发现
ElasticSearch是基于p2p协议的分布式系统,它会根据配置的集群节点名称和网络配置自动发现新加入的节点,并将新节点自动加入集群,ElasticSearch的集群是相当简单的,只需做简单的配置即可,可以降低构建分布式系统成本。
ElasticSearch在供电局应用浅析
一、系统架构
如图所示,架构分为两部分
1.原始基础数据涉及到硬件用电数据采集设备,接口数据服务器集群,以及数据存储的Elasticsearch的集群,这部分主要负责原始数据的采集和存储。
2.针对原始数据不同纬度的数据统计分析服务器,运营决策服务器等,通过web方式提供给多个部门,多个终端用户查看、使用。
二、基础数据收集
Elasticsearch是支持单条数据添加、更新的,考虑到电业局的具体情况,数据量比较大,多采集终端采集数据,以及性能问题,我们采取将采集的数据放入队列,再将队列中的数据批量,分次的导入到elasticsearch中,elasticsearch提供了批量数据的插入api,我们使用java客户端,批量插入的方式如下
BulkRequestBuilder bulkRequest = client.prepareBulk();
bulkRequest.add(client.prepareIndex("index", "type", "id")
.setSource( dataJSONStr )
);
......
bulkRequest.add(client.prepareIndex("index", "type", "id")
.setSource( dataJSONStr )
);
BulkResponse bulkResponse = bulkRequest.execute().actionGet();
通过这样的方式可以高效的存储用电数据,构建基础的数据仓库。
三、基础数据的统计、分析
针对上面收集到的数据结合电业局的具体使用,可以通过下面数据进行分析。
1.基于数据的地理位置分析
2.基于数据的来源,是民用还是企业,企业的性质
3.基于数据的时间分析
4.针对单一的企业用户的时间维度的分析
针对上面的需求分析,我们可以定义基础的实体结构
elasticsearch提供对数据统计分析的功能有facets和aggregations两种方式,在elasticsearch的1.0版本开始支持新的统计方式,即Aggregations方式,可以提供min、max、sum、avg、histogram等等新的统计方式。下面给出针对上面所说的四种分析方式elasticsearch的简易实现方式。
1.针对地理位置的统计分析,可以按照分析的实际分析维度需要进行分析,下面给出一个小时时间段的针对地理位置的java客户端实现代码。
//获取搜索请求
SearchRequestBuilder sb = SearchUtils.getDefaultSearchRequestBuilder( esClient, index, type_access_base);
//建立区间过滤
RangeFilterBuilder rf = new RangeFilterBuilder("createDate");
rf.gte(startStr);
rf.lt(end);
sb.addAggregation(AggregationBuilders
.filter("rangFilter")
.filter(rf)
.subAggregation(
AggregationBuilders
.terms("addrTerm")
.field("addr")));
SearchResponse response = sb.execute().actionGet();
//对查询数据结果获取需要的数据
Aggregations aggrs = response.getAggregations();
InternalAggregations in = ag.getAggregations();
StringTerms st = in.get("addrTerm");
for (Bucket bt : st.getBuckets()) {
Map
map.put("addr", bt.getKey());
map.put("addrCount", bt.getDocCount());
}
通過上面的代码即可获取到某一时段的不同区域的数据统计的结果,可能有人说用关系型数据库也可而且比这个还方便,为什么用elasticsearch呢?答案是,当数据比较少比如几百万的情况下,他们是可以的,但是在几十亿数据的条件下,他们就不行了,做一个聚合有可能需要的时间是难以想象和忍受的。
2.针对数据来源的统计,可以将上面的代码统计的字段改为来源的字段即可,即.field("addr")中的addr修改为需要的字段即可
3.针对时间的统计分析可以使用facets,facets提供一个 histogram facets的方式,可以设置不同的时间间隔对指定字段进行聚合统计。下面由于篇幅原因就不给出java客户端实现方式,给出rest的调用方式
{"query" : {
"match_all" : {}
},
"facets" : {
"histo1" : {
"histogram" : {
"field" : "field_name",
"time_interval" : "1.5h"
}
}
}
}
其中field指定需要统计的字段名称,time_interval指定时间间隔,可以是小时,天,更多参数请参见官方文档。
4.针对单一企业用户可以首先对数据过滤然后对过滤的数据进行histogram facets的统计聚合。
大数据在供电局中使用的展望
数据的积累就是原始的财富的积累,通过在这些数据的分析可以产生很多实际的有价值的东西,避免凭直觉和经验判断、做事。做到真正的有数据支撑,有效准确的决策支撑。
通过对数据的分析可以为家庭用户提供更好的服务,更方便的用户进行自助服务,提供信息化的渠道,减少供电局不必要的人力成本。
同时可以针对行业,提供行业云解决方案,更好的推进全局的信息化和云建设。