Logo Studenta

Implementação do MapReduce para Análise de Consumo de Energia

¡Estudia con miles de materiales!

Vista previa del material en texto

1 
 
Resumen—El siguiente documento presenta los resultados de 
la implementación del método MapReduce para el análisis de 
datos de consumo eléctrico de clientes residenciales y pequeños 
comercios. Se presentan los perfiles de carga mensual y horario 
promedio mensual por día de la semana de archivos de consumo 
de energía a partir de datos con integración regular inferior a una 
hora. Se describe además el proceso llevado a cabo para aplicar 
esta técnica mediante el uso de código en Python y el uso de 
Hadoop. Los resultados sirven como insumo para métodos 
analíticos cuando se busquen respuestas a preguntas planteadas 
sobre los datos procesados. 
 
Abstract—This document presents the results of MapReduce 
Implementation method for energy consumption data in 
residential and small commercial clients. Monthly load profiles 
and monthly average hourly profile by day of the week are shown 
from regular time data measured in less than an hour. 
Furthermore, the process used to apply this technique is described 
through Python code and Hadoop use. Results are useful as inputs 
for analytical methods in order to look for answers for questions 
about data analyzed. 
 
Keywords— BigData, MapReduce, Smart Meters. 
 
 
I. INTRODUCCIÓN 
 
a reciente normatividad referente a la instalación de 
medidores inteligentes [1] implica una masificación en el 
almacenamiento de datos provenientes de estos medidores. 
Cada que cada cliente residencial, comercial e industrial 
dispondrá de al menos un medidor entregando, entre otros, 
datos de consumo de energía y otras variables eléctricas. Esta 
cantidad de datos brinda una oportunidad tanto a las empresas 
de energía como a los consumidores de, por ejemplo, reducir 
las pérdidas y hacer más eficiente el consumo y suministro del 
recurso. 
 
 El uso de Big data para tratar con esa cantidad de datos se 
vuelve imperativo por parte los actores del mercado de energía. 
 
 
 
 
Evaluar las particularidades de cada aplicación y las 
tecnologías a implementar buscando aprovechar estos datos 
debe ser una tarea continua por parte del personal técnico de 
las empresas de energía y sector académico. 
 
Con este propósito en mente, se propone revisar la 
implementación de la técnica de Big data MapReduce para 
optimizar la caracterización de los clientes de energía 
residenciales y de pequeños comercios teniendo como base [2]. 
 
II. OBJETIVOS 
 
i. Objetivo General 
Identificar patrones de consumo de energía en 
clientes residenciales y pequeños comercios 
utilizando el método MapReduce. 
ii. Objetivos Específicos 
a. Diseñar e implementar por medio de Python el 
método MapReduce para data obtenida por 
medidores de energía residenciales y comerciales. 
b. Mostrar el patrón de consumo de energía a partir del 
resultado de MapReduce de los datos de consumo 
de diversos clientes. 
c. Concluir a cerca de la información relacionada con 
los patrones de consumo obtenidos. 
 
III. PLANTEAMIENTO DEL PROBLEMA 
 
La masificación de medidores inteligentes de energía 
demanda la recolección, almacenamiento y transformación de 
gran cantidad de datos. El aprovechamiento de esta gran 
cantidad de datos es clave para cumplir objetivos de eficiencia 
energética, control de pérdidas, facturación y masificación de 
energías renovables. 
 
Incluso pequeños y medianos consumidores pueden hacer 
uso de los datos para entre otras cosas, reducir el consumo y 
pago en la factura de energía o aumentar la vida útil de sus 
activos. 
Implementación de la técnica de Big 
Data MapReduce para la 
caracterización del consumo de 
energía de clientes residenciales y 
comerciales. 
Leonardo Fajardo Osorio, Universidad Distrital Francisco José de Caldas, 
lfosorio@correo.udistrital.edu.co 
L 
 2 
Encontrar métodos eficaces para aprovechar esa cantidad de 
datos y transformarla en información útil para todos los agentes 
del mercado, se vuelve un tema prioritario de cara a la 
digitalización del sector eléctrico. 
 
IV. ALCANCES Y LIMITACIONES 
 
Se realizan dos ejemplos de ejecución de MapReduce 
utilizando código en Python. Para correr los procesos con 
archivos Mapper y Reducer escritos en Python, se utiliza la 
utilidad Hadoop Streaming. Se corren los procesos con datos 
de uso libre de consumo de energía eléctrica para sector 
residencial y comercial. Por medio Google Cloud® se corren 
los procesos de Mapeo y Reducción en un clúster alquilado 
compuesto de un nodo principal dos nodos trabajadores. 
 
V. MARCO TEÓRICO 
 BIG DATA 
 
En la actualidad siguen existiendo más de una definición 
de Big data [3], pero puede definirse como el fenómeno que 
surge de la rápida aceleración de diversidad, complejidad y 
velocidad de datos. Relacionado muy a menudo con los 
conceptos de volumen, velocidad y variedad [4]. El volumen 
se refiere al tamaño de los datos, velocidad a la cantidad de 
datos generados y procesados o analizados por unidad de 
tiempo y variedad a qué tan uniformes o estructurados se 
encuentran los datos. Esto se conoce como los tres 
problemas vitales de Big data, a los que se agregan otras 
siete “V” como por ejemplo la veracidad, la variabilidad y la 
velocidad de los datos [5]. Big data se refiere a los desafíos 
de quienes se enfrentan al crecimiento exponencial de datos 
en términos de los problemas “V”. 
 
Hadoop 
 
Dentro de las tecnologías Big data, se encuentra Hadoop. 
Es una implementación de Big data de código abierto y de 
amplio uso en distintas industrias. Es una plataforma para el 
almacenamiento y procesado de distintos tipos de datos que 
permite obtener rápidamente valor de estos [6]. El 
framework Hadoop es una combinación de distintos 
componentes como sistemas de archivo, motores de 
procesamiento, herramientas de ingestión de datos, bases de 
datos y más [7]. 
 
HDFS 
 
El sistema distribuido de archivos de Hadoop o HDFS 
(Hadoop distributed file system) es el componente principal 
de Hadoop y lo que le da la característica más importante, 
ser un sistema distribuido. Es lo que permite el 
almacenamiento de archivos de gran volumen sobre un 
cluster de computadoras [8]. Al distribuir el o los archivos 
entre los elementos del clúster, facilita que cada computador 
o nodo perteneciente a ese clúster pueda realizar el 
procesamiento de ese segmento de los datos, reduciendo el 
tiempo utilizado para mover la data del punto de 
almacenamiento a los puntos de procesamiento. 
 
MapReduce 
 
Es un modelo computacional utilizado por Hadoop para el 
procesamiento en paralelo de grandes cantidades de datos 
[9]. Tiene dos etapas, una de mapeo en la cual se toman los 
datos en HDFS y se crean pares <llave, valor-1, valor-2, …, 
valor-n> y otra etapa de reducción que busca disminuir la 
salida de los datos uniendo los datos de acuerdo con su llave 
y valor. Existe una etapa intermedia de ordenamiento que es 
clave según el resultado de salida que se busque. La 
siguiente imagen ilustra el flujo ejecutado en un proceso 
MapReduce. 
 
 
 
Fig. 1. Flujo MapReduce. 
 
VI. PROCESO DE DESARROLLO 
 
Para iniciar con el desarrollo lo primero es asegurarse de 
contar con datos masivos de medidores inteligentes. Una vez 
se tengan estas fuentes de datos, se procede a diseñar las 
tareas de mapeo y reducción. 
 
Se utiliza como primera fuente un conjunto de 100 
archivos de consumo de energía en kWh del sector 
comercial, cada uno con muestras de 12 meses y con un 
tiempo de integración de 5 minutos. Estos archivos en 
formato CSV tienen un tamaño de entre 4.5 y 4.7 MB y una 
única columna de datos de energía consumida. 
 
 
 
 3 
Fuente 1: 
 
https://open-enernoc-
data.s3.amazonaws.com/anon/index.html. 
 
La segunda fuente de archivos corresponde a un único 
archivo con valores de potencia en kW para 370 con 
intervalos de 15 minutos entre medidas. Primero se obtienen 
los valoresde energía antes de utilizar la data para su 
manipulación. 
 
 
Fuente 2: 
https://archive.ics.uci.edu/ml/datasets/ElectricityLoadDia
grams20112014 
 
Para ejecutar los jobs en Hadoop, se utiliza un cluster del 
servicio Dataproc de Google Cloud, compuesto de un nodo 
principal y dos nodos trabajadores. 
 
 
 
Fig. 2. Captura de Pantalla de la Consola Google Cloud para manejar el 
cluster rentado. 
 
 
 
Las tareas Map y Reduce se escriben en Python para cada 
uno de los casos. Buscando que Hadoop pueda ejecutar estas 
tareas en Python, se utiliza la utilidad Hadoop-streaming 
desde el nodo principal del clúster. 
 
La siguiente tabla muestra un fragmento de un archivo de 
la primera fuente: 
 
 
TABLA I 
FRAGMENTO DE ARCHIVO DE ENTRADA DE LA PRIMERA FUENTE. 
Timestamp dttm_utc value estimated anomaly 
1325376600 2012-01-01 00:10:00 52.1147 0 
1325376900 2012-01-01 00:15:00 50.9517 0 
1325377200 2012-01-01 00:20:00 49.8164 0 
1325377500 2012-01-01 00:25:00 49.1795 0 
… … … … … 
 
 
De la tabla anterior se utilizan únicamente las columnas 
de tiempo “dttm_utc” y de consumo de energía en kWh 
“value”. 
 
 
Se crea el primer caso para apropiar el manejo de la 
herramienta utilizando este archivo y teniendo como 
objetivo encontrar el total del consumo mensual. Para esto se 
plantean las siguientes tareas Map y Reduce. 
 
Map. 
Llave: Mes y año 
Valor: Energía. 
 
Orden. 
Ordenado por fecha de manera descendente. 
 
Reduce. 
Suma de los valores que tengan la misma llave. 
 
Como resultado se tiene el acumulado de energía mensual 
para los clientes en un año. Se puede graficar el resultado 
para un cliente. 
 
 
Fig. 3. Consumo de energía mensual para un cliente comercial durante un 
año. 
 
 
 
Esta primera aproximación ya permite ver la utilidad de 
MapReduce al reducir la cantidad de filas del archivo 
pasando de 105386 líneas a tener uno de 12 filas con la 
información requerida. Esta aproximación deja ver además 
la variación en el consumo mensual de ese cliente. 
 
El siguiente paso después de interiorizar la herramienta es 
abordar un caso más específico. Este corresponde a 
encontrar el promedio de consumo horario para cada día de 
la semana discriminando por mes. Para esto las tareas de 
Map y Reduce deben cumplir lo siguiente: 
 
Map. 
Llave: año, mes, día, día de la semana, hora. 
Valor: Energía 
 
Orden. 
Ordenado por fecha de manera descendente en el 
siguiente orden de importancia: año, mes, día de la semana y 
hora. 
 
Reduce. 
Calcula el promedio de los valores con la misma llave. 
https://open-enernoc-data.s3.amazonaws.com/anon/index.html
https://open-enernoc-data.s3.amazonaws.com/anon/index.html
https://archive.ics.uci.edu/ml/datasets/ElectricityLoadDiagrams20112014
https://archive.ics.uci.edu/ml/datasets/ElectricityLoadDiagrams20112014
 4 
 
Con este diseño de Map, orden y Reduce se obtiene un 
archivo de salida de 2016 líneas y 2 columnas, partiendo del 
mismo archivo del caso anterior. Evidentemente un archivo 
más ligero, más fácil de graficar y procesar con métodos 
analíticos. 
 
La siguiente tabla contiene una muestra del archivo de 
salida para el presente caso. La columna 1 tiene las llaves en 
el orden año-mes-día de la semana-hora. La segunda tiene el 
consumo de energía promedio horario en kWh para esos días 
de la semana. El día de la semana se toma en valores desde 1 
(lunes) hasta 7 (domingo). 
 
 
TABLA II 
FRAGMENTO DE ARCHIVO DE SALIDA DEL SEGUNDO CASO MAPREDUCE. 
Columna 1 Columna 2 
2012-01-1-00 407.11536 
2012-01-1-01 375.29818 
2012-01-1-02 375.29818 
2012-01-1-03 372.73392 
2012-01-1-04 369.57714 
… … 
 
 
 
El resultado puede graficarse discriminando para cada 
mes, y en cada mes discriminando para días en semana y 
días de fin de semana. A continuación, se grafican los 
resultados para los meses de enero y junio. 
 
 
Fig. 4. Perfil de carga promedio horario por día en semana entresemana 
para el mes de enero 2012. 
 
 
 
Fig. 5. Perfil de carga promedio horario por día fin de semana para el mes de 
enero 2012. 
 
 
 
Fig. 6. Perfil de carga promedio horario por día en semana entresemana 
para el mes de junio 2012. 
 
 
 
Fig. 7. Perfil de carga promedio horario por día fin de semana para el mes 
de junio 2012. 
 
Lo primero que se aprecia al ver las gráficas de este 
cliente es que presenta mayor actividad comercial en horas 
de la tarde y noche. Además, entre la noche del domingo y la 
madrugada y mañana del lunes es cuando tiene 
presumiblemente actividad mínima según su bajo consumo 
de energía. El resto de los días de la semana el consumo es 
similar. Estas curvas de consumo se mantienen similares 
para todos los meses del año, aunque varían en magnitud de 
acuerdo con la Figura 3, por lo que también se puede deducir 
que su actividad económica tiene picos de demanda en enero 
y agosto. Presumiblemente se trataría de un cliente 
comercial de actividad nocturna y vespertina. 
 
Este tipo de resultado fue bastante más específico y se 
evidencia como permite analizar y caracterizar el consumo 
de cada uno de los clientes. 
 
También puede ser procesado con MapReduce un único 
archivo de varios clientes. Este tercer caso similar al anterior 
debe ahora considerar la segunda fuente de datos. Tanto el 
Map como el Reduce requieren modificarse para manejar 
más de una columna en la entrada. Como en esta segunda 
fuente el consumo está en unidades de potencia, los datos 
deben antes convertirse en valores de energía dividiendo en 
4 los valores de potencia separados por 15 min. 
 
Se mantiene la misma llave del segundo caso, sin 
embargo, ahora el valor de cada llave es un conjunto de 
tamaño 370. 
 
 
 5 
 
 
TABLA III 
FRAGMENTO DE ARCHIVO DE ENTRADA DE LA SEGUNDA FUENTE. 
 MT_
001 
MT_
002 
… MT_
369 
MT_
370 
2011-01-01 00:15:00 0 0 … 0 0 
2011-01-01 00:30:00 0 0 … 0 0 
2011-01-01 00:45:00 0 0 … 0 0 
2011-01-01 01:00:00 0 0 … 0 0 
2011-01-01 01:15:00 0 0 … 0 0 
… … … … … … 
 
 
Map. 
Llave: año, mes, día, día de la semana, hora. 
Valor: Energía1, Energía2,…,Energía370. 
 
Orden. 
Ordenado por fecha de manera descendente en el orden 
año, mes, día de la semana y hora. 
 
Reduce. 
Calcula el promedio de los valores con la misma llave 
(múltiples filas). 
 
Con este diseño de Map, orden y Reduce para la segunda 
fuente se obtiene un archivo de salida de 8064 líneas y 371 
columnas, del archivo original que tenía 140257 líneas. 
 
Aprovechando el resultado con múltiples clientes de este 
caso, se puede utilizar esta salida del MapReduce para 
caracterizar de otra manera los distintos clientes. A 
continuación, se ilustra el archivo de salida, filtrando para 
obtener los resultados de los días domingo del mes de enero 
del año 2013. Para facilitar su visualización en la gráfica se 
restringen los resultados con valores de consumo que estén 
por encima de 1000 kW 
 
 
 
Fig. 8. Perfiles de carga resultado de MapReduce para el caso de un archivo 
con múltiples clientes. 
 
 
Se puede por ejemplo utilizar ese resultado para agrupar 
perfiles en grupos similares. 
 
La siguiente gráfica muestra el resultado de agrupar el 
archivo de salida por medio del método k-medias. Se siguió 
el método descrito por [10] a partir de los resultados de este 
caso de MapReduce. Fueron seleccionados 3 grupos de 
acuerdo con el resultado de salida de MapReduce. Vemos 
entonces tres grupos según su perfil de consumo de energía 
resaltando el valor medio de cada grupo. 
 
 
Fig. 9. Perfiles de carga resultado de MapReduce para el caso de un archivo 
con múltiples clientes, agrupados utilizando método de k-medias. 
 
 
Quedan entonces tres casos puntuales de aplicación de 
MapReduce a datos de medidores de energía, y su 
disposición para, por medio de otras herramientas, extraer 
valor de los datos. 
 
 
VII. CONCLUSIONES- Se tiene una validación exitosa de la aplicación de 
MapReduce para abordar cantidades masivas de datos 
provenientes de sistemas de medición de energía. El 
uso de Python para escribir el código de mapeo y 
reducción redujo la complejidad a la hora de 
programar estas tareas lo que permite a quienes tienen 
un conocimiento básico en programación acceder a 
esta tecnología con una rápida curva de aprendizaje. 
Se debe plantear la pregunta sobre que tanto afecta el 
rendimiento de tareas MapReduce el uso de Python 
sobre otros lenguajes más eficientes como Java, y a 
partir de que punto o qué condiciones las diferencias 
en rendimiento empiezan a ser considerables. 
 
- Si bien se abordaron varios casos de aplicación de 
MapReduce para data de consumo de energía, cada 
uno requirió un cambio en el código de las tareas Map 
y Reduce. Esto debido a la alta dependencia del 
formato de datos de entrada, no únicamente 
requiriendo de data estructurada sino también de 
temas como el signo de puntuación decimal, formatos 
de fecha y unidades de los valores capturados. Esto le 
puede restar flexibilidad a la hora de aplicaciones 
reales. [11] Ya aborda parte del problema. 
 
 
 6 
 
- La simplificación de los datos a partir de un archivo 
plano de entrada fue evidente. Tener como salida 
archivos de salida de menor tamaño con la 
información requerida facilita su posterior uso para 
tareas de análisis y predicción. Es una herramienta 
que nutre otras aplicaciones en pro de obtener valor de 
los datos de consumo de energía de los usuarios. 
 
 
 
REFERENCIAS 
 
[1] G. Ministerio de Minas y Energía. Comisión de Regulación de Energía y 
Gas. Resolución No 131 de 2020. 25 de Junio de 2020. 
[2] E. Correa, E. Inga, J. Inga, R. Hincapié. “Patrón de consumo eléctrico 
basado en el sistema de gestión de datos medidores usando técnicas de 
Big Data”. 2017, International Conference on Information Systems and 
Computer Science. 
[3] AmirGandomi. MurtazaHaider. “Beyond the hype: Big data concepts, 
methods, and analytics”. 
[4] Federal Big Data Commission. “Demistyfying big data echAmerica 
Foundation’s”. 
[5] Uma N. Dulhare, Khaleel Ahmad, Khairol Amali Bin Ahmad. “Machine 
Learning and Big Data: Concepts, Algorithms, Tools and Applications”. 
[6] Michael Minelli, Michele Chambers and Ambiga Dhiraj. “Big Data, Big 
Analytics: Emerging Business Intelligence and Analytic Trends for 
Today's Businesses.” 
[7] Singh, Gurmukh. “Hadoop 2.x Administration Cookbook.” 
[8] Shrivastava, Anurag, Deshpande, Tanmay. “Hadoop Blueprints”. 
[9] MapReduce Tutorial, https://hadoop.apache.org/docs/stable/hadoop-
mapreduce-client/hadoop-mapreduce-client-
core/MapReduceTutorial.html#Purpose. 
[10] L.G.Viola. “Clustering electricity usage profiles with K-means”. 
http://lucianogviola.com/ 
[11] R. Bhardwaj, N. Mishra. “Data Analizyng Using Map-Join Reduce in 
Cloud Storage”. 2014 International Conference on Parallel, Distributed 
and Grid Computing. 
 
 
 
 
 
 
https://www.sciencedirect.com/science/article/pii/S0268401214001066#!
https://www.sciencedirect.com/science/article/pii/S0268401214001066#!
https://onlinelibrary-wiley-com.ezproxy.unal.edu.co/action/doSearch?ContribAuthorRaw=Dulhare%2C+Uma+N
https://onlinelibrary-wiley-com.ezproxy.unal.edu.co/action/doSearch?ContribAuthorRaw=Ahmad%2C+Khaleel
https://onlinelibrary-wiley-com.ezproxy.unal.edu.co/action/doSearch?ContribAuthorRaw=Ahmad%2C+Khairol+Amali+Bin
https://onlinelibrary-wiley-com.ezproxy.unal.edu.co/doi/book/10.1002/9781119654834
https://onlinelibrary-wiley-com.ezproxy.unal.edu.co/doi/book/10.1002/9781119654834
https://hadoop.apache.org/docs/stable/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html#Purpose
https://hadoop.apache.org/docs/stable/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html#Purpose
https://hadoop.apache.org/docs/stable/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html#Purpose
http://lucianogviola.com/data/energy_clustering/
http://lucianogviola.com/

Continuar navegando