PROYECTO FINAL: ARQUITECTURA BIG DATA DE VARIABLES MACROECON脫MICAS

#PROYECTO-FINAL:-ARQUITECTURA-BIG-DATA-DE-VARIABLES-MACROECON脫MICAS

Caso de uso de negocio

El ministerio de Econom铆a de Per煤 necesita tener informaci贸n de indicadores de desarrollo mundial socioecon贸mico, comparada por a帽os y pa铆ses para para poder determinar en donde en que posici贸n se encuentra el Per煤 y a partir de ello determinar KPI y pol铆ticas de desarrollo. Se ha recurrido a un open data con estad铆sticas de varios a帽os del Banco Mundial. Dado que se cuenta una amplia cantidad de registros entre pa铆ses, indicadores por pa铆ses y a帽o, desde 1960 a 2018 se requiere la utilizaci贸n de tecnolog铆as de Big Data para la mejor gesti贸n de informaci贸n.

Las 3 V鈥檚 del Big Data

Volumen: Se cuenta con una amplia cantidad de registros de 264 pa铆ses, 1431 indicadores de desarrollo por cada pa铆s y estos a la vez por cada a帽o desde 1960 hasta el 煤ltimo a帽o (2018).

Variedad: La informaci贸n con respecto a los indicadores econ贸micos se obtiene de fuente con tipo de datos estructurados (csv, txt y xls).

Velocidad: Se requiere hacer consultas r谩pidas en tiempo real por distintos usuarios en los tableros de visualizaci贸n y la realizaci贸n de procesos batch para el almacenamiento de archivos.

Fuente de datos:

Se requiere fuentes externas, la cual es obtenida desde la p谩gina del Banco Mundial y extra铆da por el Ministerio de Econom铆a y Finanzas. La data es generada 1 vez al a帽o.

Tipo de dato: Estructurado y Tradicional

Arquitectura conceptual

Fuente: Archivos ".csv"

Ingesta: Transferencia de archivos a HDFS

Almacenamiento: HDFS

An谩lisis: Limpieza y transformaci贸n de datos. Proceso de ML.

Visualizaci贸n: Indicadores Dashboard

Capas de data lake:

RDA:

Data bruta: es la data que se obtien de los archivos "csv"

UDA:

Data universal: la data se almacena formato "parquet"

DDA:

Data dimensional: Se genera los tablones para la visualizaci贸n y procesos de ML Clasificaci贸n de las fuentes de datos:

Perfiles de Big Data

Data Engineer: que administre las tecnolog铆as propuestas, as铆 como supervise el buen desarrollo del proyecto.

Data Architect: se requiere este perfil para darle estructura a la data en Excel, determinal su mejor arquitectura para cumplir el objetivo final por la Data Analyst, convertirlo el archivo en un CSV para que sea manejable de las tecnolog铆as de Big Data propuestos.

Bussines and Data Analyst: se require este perfil dado que el requerimiento del MEF es tener un tablero de mando din谩mico con KPIs en donde se muestren las interrelaciones de los datos, evoluci贸n y proponer un modelo de explicativo del crecimiento del PBI en funci贸n de los indicadores de desarrollo.

Creaci贸n de las tablas a ingestar

hdfs dfs -mkdir datalake

hdfs dfs -mkdir datalake/rda

hdfs dfs -mkdir datalake/uda

hdfs dfs -mkdir datalake/dda

hdfs dfs -mkdir datalake/rda/DataMundial

hdfs dfs -mkdir datalake/rda/DataMundial/paises

hdfs dfs -mkdir datalake/rda/DataMundial/indicadores

hdfs dfs -mkdir datalake/rda/DataMundial/base

hdfs dfs -mkdir datalake/rda/DataMundial/base_peru

hdfs dfs -mkdir datalake/uda/DataMundial/

hdfs dfs -mkdir datalake/uda/DataMundial/base_estatica

hdfs dfs -mkdir datalake/uda/DataMundial/base_dinamica

hdfs dfs -mkdir datalake/uda/DataMundial/paises_bucketing

hdfs dfs -put base.csv /datalake/rda/datamundial/base

hdfs dfs -put paises.csv /datalake/rda/datamundial/paises

hdfs dfs -put indicadores.csv /datalake/rda/datamundial/indicadores

hdfs dfs -put base_peru.csv /datalake/rda/datamundial/base_peru

Transformaciones complejas con Apache Spark

join = spark.sql("select * from datamundial.base_peru bp inner join datamundial.paises p on bp.code_contry=p.code_country").show()

El flujo en streaming usando Apache Kafka

Apache Kafka es un proyecto de intermediaci贸n de mensajes open source, desarrollado por la Apache Software Foundation escrito en Java y Scala. El proyecto tiene como objetivo proporcionar una plataforma unificada, de alto rendimiento y de baja latencia para la manipulaci贸n de datos en tiempo real, horizontalmente escalable y tolerante a fallos. Puede verse como un gestor de cola de mensajes, con una estructura de publicaci贸n-suscripci贸n. Kafka es masivamente escalable, concebida como un registro de transacciones distribuidas. Se basa principalmente en 3 funcionalidades clave:

鈥 Permitirte publicar y suscribirte a flujo de datos, similar a una cola de mensajes.

鈥 Sistema de almacenamiento de registros persistente y tolerante a fallos.

鈥 Procesar flujo de datos en tiempo real.

Kafka est谩 dise帽ado principalmente para 2 tipos de objetivos:

鈥 Construir flujos de datos en tiempo real para obtener datos de forma segura entre sistemas.

鈥 Creaci贸n de aplicaciones de transmisi贸n de datos en tiempo real, que pueden transformarse o reaccionar a los flujos de datos.

Para tener la capacidad de mover una gran cantidad de flujo de datos, Kafka trabaja en cl煤ster de uno o m谩s servidores. Este almacena flujos de datos 鈥榬ecords鈥 en categor铆as llamadas 鈥榯opics鈥. Cada registro consta de una clave, un valor y una fecha, garantizando as铆 la persistencia de los datos. Kafka, para permitirte gestionar sus funcionalidades dispone de 4 API鈥檚:

鈥 Producer API, que te permite que una aplicaci贸n publique una secuencia de records a uno o m谩s topics de Kafka.

鈥 Consumer API permite que una aplicaci贸n se suscriba a uno o m谩s topics y procese la secuencia de records disponibles.

鈥 Streams API permite que una aplicaci贸n act煤e como un procesador de flujo de datos, consumiendo un flujo de entrada de uno o m谩s topics y produciendo un flujo de salida a uno o m谩s topics de salida, transformando los flujos de entrada en flujos de salida diferentes.

鈥 Connect API permite crear y ejecutar producer o consumer reutilizables que conectan los topics de Kafka a las aplicaciones de tu organizaci贸n. Por ejemplo, un conector a una base de datos MySQL.

Modelo de Machine Learning (Regresi贸n Lineal)

Se ha creado un modelo emp铆rico del porcentaje del ahorro bruto sobre el PBI para Per煤 en funci贸n a los datos disponibles en la tabla extra铆da del Banco Inter americano de Desarrollo, en donde se ha podido determinar el siguiente modelo explicativo de esta variable:

AB_PBI = Constante + BCBS_PBI + CREIN_BANC + DCP_DEXTER + FBC_PBI + IMPORT + GCFIN + TURISMO_INTER + u

Donde: AB_PBI=Ahorro bruto (% del PIB)

BCBS_PBI=Balanza comercial de bienes y servicios (% del PIB)

CREIN_BANC=Cr茅dito interno al sector privado otorgado por los bancos (% del PIB)

DCP_DEXTER=Deuda a corto plazo (% del total de la deuda externa)

FBC_PBI=Formaci贸n bruta de capital (% del PIB)

IMPORT=Mercader铆as importadas por la econom铆a informante (US$ actuales)

GCFIN=Gasto de consumo final (US$ a precios actuales)

TURISMO_INTER=Turismo internacional, recibos (% del total de exportaciones)

U= factor de error

Loading output library...
Loading output library...
Loading output library...
Loading output library...
Loading output library...
Loading output library...
Loading output library...
Loading output library...
Loading output library...
Loading output library...
Loading output library...
Loading output library...

Visualizaci贸n con Power BI

https://bit.ly/2qtYBcu

Las variables utilizadas en la regresi贸n lineal tambi茅n nos permiti贸 realizar un seguimiento de estas, utilizando Power BI se cre贸 un modelo gr谩fico en el cual se describe la evoluci贸n anual de la variable a explicar siendo esta el porcentaje de ahorro respecto al PBI, y tambi茅n se ha graficado 2 variables significativas del modelo siendo estas el porcentaje de la balanza comercial respecto al PBI y la variable, con relaci贸n negativa pero significativa, deuda a corto plazo respecto a la deuda externa total.

Flujo b谩sico de streaming con Apache Kafka

Existe un elemento "publisher" (publicador / remitente / emisor / productor) que al generar un dato (message / mensaje / record / registro) no lo dirige o referencia espec铆ficamente a un "subscriber" (receptor / subscriptor / suscriptor) en concreto, es decir, no lo env铆a de forma directa a la "direcci贸n" del subscriber. Para ello se dispone de listas de temas/topics publicados espec铆ficos y un conjunto de suscriptores, el productor trata de clasificar el mensaje en base a una tipolog铆a, lo pone en la lista de un tema espec铆fico y el receptor se suscribe a las listas para recibir ese tipo de mensajes.