¿como puede ayudar el big data al sector alimentario?

118
TRABAJO FIN DE MÁSTER Máster Universitario en Arquitectura del Software Big Data: Aplicación y Utilidad en el Sistema Alimentario Autor/a: Juan Olivera Director: Juan Alfonso Lara Torralbo Curso 2015/2016

Upload: juan-pablo-olivera

Post on 23-Jan-2018

125 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: ¿Como puede ayudar el Big Data al sector alimentario?

TRABAJO FIN DE MÁSTER

Máster Universitario en Arquitectura del Software

Big Data: Aplicación y Utilidad en el Sistema Alimentario

Autor/a: Juan Olivera

Director: Juan Alfonso Lara Torralbo

Curso 2015/2016

Page 2: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 2 -

Page 3: ¿Como puede ayudar el Big Data al sector alimentario?

ÍNDICE

RESUMEN ................................................................................................................................4 1. INTRODUCCIÓN .............................................................................................................6

1.1. Objetivos del trabajo .......................................................................................... 8

1.2. Tecnologías empleadas ....................................................................................... 8 1.3. Beneficios esperados .......................................................................................... 9 1.4. Organización del resto del documento ................................................................ 9

2. ESTADO DE LA CUESTIÓN ........................................................................................11 2.1. Nutrición .......................................................................................................... 11

2.2. Open Data ........................................................................................................ 12 2.3. Big Data ........................................................................................................... 16

2.3.1. Apache Zeppelin ............................................................................................... 19 2.3.2. Apache Spark .................................................................................................... 25 2.3.3. MongoDB .......................................................................................................... 35

2.4. Aplicaciones de Big Data en el campo de la nutrición. ..................................... 44

3. DESARROLLO ...............................................................................................................46 3.1. Definición de variables e indicadores ............................................................... 46

3.1.1. Promedio de sal consumida por país ............................................................... 46

3.1.2. Promedio de azúcar consumida por país. ....................................................... 47 3.1.3. Ranking de productos más grasos. .................................................................. 47

3.1.4. Distribución de productos menos saludables ................................................. 48 3.2. Base de datos ................................................................................................... 49

3.2.1. Proceso de carga de datos ................................................................................ 50 3.2.2. Importación de datos en una instancia local................................................... 51

3.2.3. Esquema de datos ............................................................................................. 52 3.2.4. Población y muestra ......................................................................................... 55

3.3. Creación de indicadores ................................................................................... 55

3.3.1. Carga de datos ................................................................................................... 56 3.3.2. Transformación de datos .................................................................................. 59

3.3.3. Visualización de datos ...................................................................................... 64 4. RESULTADOS Y EVALUACION DE LA PROPUESTA ............................................75

4.1. Resultados obtenidos ........................................................................................ 75

4.2. Evaluación de la propuesta ............................................................................... 78 5. CONCLUSIONES Y LÍNEAS FUTURAS .....................................................................85 6. REFERENCIAS BIBLIOGRÁFICAS Y RECURSOS ELECTRÓNICOS ....................88 7. ANEXOS .........................................................................................................................92

7.1. Ejemplo de un producto en formato JSON ....................................................... 92 7.2. Información etiquetas de productos ................................................................ 110 7.3. Distribución de productos Open Food Facts ................................................... 115

8. AGRADECIMIENTOS .................................................................................................117

Page 4: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 4 -

RESUMEN

El presente trabajo estudia la nutrición en el mundo a través del análisis de grandes

volúmenes de datos, que son referidos a productos alimenticios consumidos en diferentes

regiones del mundo, con el objetivo de conocer los hábitos alimentarios a escala mundial y

así proporcionar información objetiva y resumida, que contribuya y ayude a los países y/o

organismos a elaborar programas y políticas que permitan abordar problemas de malnutrición

y mejorar la salud de las personas.

El resultado del trabajo se conforma de un conjunto de indicadores alimentarios construidos a

partir del análisis de más de ochenta mil etiquetas de productos alimenticios, provenientes de

una Base de Datos Abierta y Colaborativa, haciendo uso de técnicas, conceptos y

herramientas de Big Data, Open Data y Data Mining.

Esta publicación, que servirá de introducción general a los problemas nutricionales de los

países, pretende aportar una mirada más sobre la nutrición en el mundo así como educar y

generar conciencia sobre nuestra alimentación y cómo influye en nuestra calidad de vida.

Esta publicación será especialmente útil para los organismos y profesionales de la salud así

también como el público en general.

Palabras clave: Nutrición, Salud, Alimentos, Datos Masivos, Datos Abiertos, Datos

Colaborativos, Dieta, Indicadores Nutricionales.

Page 5: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 5 -

ABSTRACT

The present work studies the role of nutrition in the world through the analysis of large

volumes of data related to food products consumption in different parts of the world, with the

aim of finding out the eating habits globally and thus provide objective, reliable and easy to

understand information, that help countries and its governments to create programmed and

policies that allow them to address the nutritional problems and improve health conditions.

The result of this work shows a set of nutrition indicators obtained by analyzing over eighty

thousand food labels from food products from an open database, using tools such as Big

Data, Open Data y Data Mining.

This publication will serve as an introduction to nutrition problems and intends to make a

contribution on the topic, raising awareness of how diet has a direct influence in the quality

of life of human beings.

This work will be particularly useful for organisms and healthcare professionals, as well as

the general public.

Key words: Nutrition, Healthy, Food products, Big Data, Open Data, Collaborative Data,

Diet, Nutritional Indicators.

Page 6: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 6 -

1. INTRODUCCIÓN

Comer es imprescindible para vivir, pero muchas veces comemos por aburrimiento, para

calmarnos, para celebrar, para juntarnos con amigos y/o familia, o simplemente por placer.

En un tiempo en el que vivimos rodeados de estímulos que incitan a comer (programas de

TV, publicidades, supermercados con góndolas rebosantes de alimentos, etc.) y en el que los

alimentos son producidos a gran escala, procesados y manipulados para el consumo, es

importante conocer como están constituidos los alimentos para así saber cómo contribuyen o

repercuten sobre la salud y la calidad de vida de las personas.

La nutrición es uno de los pilares de la salud y es uno de los instrumentos más válidos y

efectivos que tenemos para proteger nuestra salud. Pese a que cada vez hay más información

respecto a cómo alimentarse sanamente, el sobrepeso, la inclinación hacia la comida basura,

los excesos y las enfermedades causadas por una mala nutrición están presentes en la vida de

muchas personas.

Una mala nutrición puede reducir la inmunidad, aumentar la vulnerabilidad a las

enfermedades, alterar el desarrollo físico y mental, y reducir la productividad. “Se estima que

un 30% del cáncer se produce por una mala alimentación” (Escribano)

Hoy en día, los alimentos procesados se han convertido en base de la dieta de las personas,

sustituyendo la comida natural. Un alimento procesado es todo aquel que se encuentra

sometido a un tratamiento que busca brindarle determinadas características: potenciar su

sabor, modificar su textura, agregar valor nutricional y aumentar su durabilidad.

Muchos de estos alimentos contienen grandes cantidades de aditivos que no contribuyen

beneficiosamente a nuestra salud. Una encuesta de la Universidad de Bristol revelo que los

niños que llevaron una dieta rica en alimentos procesados en sus primeros años de vida tenían

una disminución en su coeficiente a diferencia de los que tenía una alimentación alta en

verduras y fibras. Otro estudio de la Universidad de Hawaii reveló que la gente que consumía

más carne procesada tenía una probabilidad más alta un 67% de contraer cáncer de páncreas.

Page 7: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 7 -

“Los alimentos procesados contribuyen hasta en un 75 % de sodio en la dieta.” (Katherine)

Conocer como están constituidos los alimentos es importante para mejorar el estado

nutricional de toda la población. Las etiquetas de los productos alimenticios aportan una

valiosa información que van desde los ingredientes utilizados para su elaboración hasta el

tipo de material utilizado para su envasado.

Para poder descubrir y dar a conocer patrones alimentarios este trabajo se centra en el estudio

de los siguientes datos:

Categoría del Producto o Alimento. Por ejemplo: Snack

Ingredientes que lo conforman. Por ejemplo: Aceite de Girasol

Origen de los ingredientes. Por ejemplo: Perú

Lugar donde el producto fue confeccionado o transformado. Por ejemplo: Perú

Aditivos. Por ejemplo: E330 – Ácido Cítrico

Información Nutricional: Por ejemplo: Proteínas o Colesterol que aporta.

Países donde el producto es comercializado. Por ejemplo: España

Lugar donde fue adquirido el producto. Por ejemplo: Meylan, Francia

Datos de información general como ser: página web, código de barra e imagen del producto

no son tenidos en cuenta en este trabajo.

Los datos mencionados anteriormente forman parte de Open Food Facts, un proyecto

colaborativo y abierto, en el que personas desde diferentes partes del mundo contribuyen

aportando datos sobre los productos alimenticios. Cuenta con una base de datos Abierta,

Colaborativa y Libre, que contiene información de las etiquetas de miles de productos

provenientes de diferentes partes del mundo.

Page 8: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 8 -

1.1. Objetivos del trabajo

El objetivo de este trabajo es aportar conocimiento a través de la exploración de dichos datos,

haciendo uso de técnicas, herramientas y conceptos de Big Data y definiendo indicadores

que permitan:

Conocer los hábitos alimentarios de las diferentes poblaciones.

Proporcionar conocimiento sobre dieta y salud.

Aportar datos para ayudar a las regiones y países a abordar los problemas de nutrición

a través de políticas y medidas.

Reunir e intercambiar información sobre el estado nutricional de los países.

Contribuir con datos que ayuden a prevenir y abordar la malnutrición en el mundo.

Impulsar la creación de una industria de alimentos más abierta y transparente.

1.2. Tecnologías empleadas

El resultado del trabajo es presentado haciendo uso del concepto de web notebook, un entorno

interactivo web, en el que se representan los indicadores por medio de diferentes gráficas y a

través del cual pueden explicarse o construirse nuevos indicadores, permitiendo almacenar o

incluir los mismos en otros sitios web, como por ejemplo un blog de nutrición y salud.

Las principales tecnologías utilizadas en este trabajo son:

Apache Zeppelin.

Apache Spark.

MongoDB.

Page 9: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 9 -

1.3. Beneficios esperados

Este estudio resulta beneficioso para:

1. Población: los indicadores alcanzados por este trabajo pretenden mostrar e informar

cómo nos alimentamos las personas de diferentes regiones del mundo con el objetivo

de educar y generar conciencia sobre aquello que comemos y cómo influye sobre

nuestra salud y calidad de vida.

2. Organismos de salud: la información proporcionada por este trabajo contribuye a la

elaboración de políticas y medidas por parte de los organismos de salud, tanto

regional como global, que permitan abordar problemas de malnutrición y

enfermedades asociadas. Por ejemplo creación y/o modificación de leyes, controles y

sanciones, etc.

3. Profesionales de la salud: nutricionistas y dietólogos pueden beneficiarse de este

trabajo al contar con información que les permite conocer mejor los hábitos

alimentarios de diferentes regiones, que productos están disponibles en cada región y

como están conformados esos productos y así poder trabajar no solo con pacientes

locales sino también con pacientes de cualquier parte del mundo.

1.4. Organización del resto del documento

Los capítulos restantes de este documento se organizan en tres capítulos:

En el Capítulo 2 se presenta el estado de la cuestión relacionado con el análisis de grandes

volúmenes de datos aplicado al ámbito de la nutrición y la salud. Se presenta el contexto

actual y las tecnologías relacionadas con este trabajo. También se introduce algunas

soluciones BigData y OpenData implementadas bajo el mismo dominio de aplicación.

Seguidamente, en el Capítulo 3 se presenta los detalles de la solución para la construcción de

un sistema web interactivo que permita el análisis de datos nutricionales con el objetivo de

Page 10: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 10 -

conocer y descubrir: tendencias, patrones y hábitos alimentarios.

Por último, en el Capítulo 4 se concluye el trabajo, resumiendo los principales resultados.

También se discute el trabajo a futuro.

Page 11: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 11 -

2. ESTADO DE LA CUESTIÓN

2.1. Nutrición

Existen cuatro factores que están en el origen de la mayoría de las enfermedades y cuyos

efectos combinados multiplican su nocividad:

La mala alimentación

La falta de ejercicio físico

El consumo de tóxicos (tabaco, drogas, alcohol, etc.)

El estrés.

“Los factores de riesgo alimentarios representan el 11% de la pérdida de la salud, mientras

que la mala alimentación se prevé que superará el tabaco como un importante factor de riesgo

de mortalidad para el año 2016.” (Mhurchu, 2013). El profesor Cliona Ni Mhurchu, es el

principal investigador del programa “Effective interventions and policies to improve

population nutrition and health”, un programa construido usando técnicas de Big Data.

Los problemas nutricionales causados por una dieta inadecuada pueden ser de muchos tipos.

Una buena nutrición es la primera defensa contra las enfermedades y nuestra fuente de

energía para vivir y estar activo.

La nutrición comienza con lo que comemos: los productos del sector alimentario y agrícola.

“El 85% de los alimentos que se consumen en la actualidad son procesados” (Hueda, 2016)

Es sabido que la gran mayoría de ellos resulta poco saludable, debido a que tras los procesos

de transformación que experimentan pierden nutrientes y propiedades naturales, e incorporan

aditivos artificialmente creados para tal fin. Estos aditivos, no son bien digeridos por el

organismo, ya que el cuerpo no está preparado para ellos y un consumo desmedido de estos

puede causar enfermedades como diabetes, obesidad, problemas cardiacos e incluso

diferentes tipos de cáncer.

Page 12: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 12 -

"No todos los alimentos procesados son una mala elección. Algunos necesitan ser procesados

para que sean seguros, como la leche, que debe ser pasteurizada para eliminar las bacterias

dañinas. Otros alimentos lo necesitan para ser adecuados para el consumo, por ejemplo,

prensar semillas para hacer aceite”.

"Congelar frutas y verduras preserva la mayoría de las vitaminas, mientras que los productos

en conserva favorecen el almacenamiento y la posibilidad de cocinarlos y comerlos durante

todo el año, a menor costo que los frescos y con menos residuos". (Porter, 2015)

Por defecto o por exceso, los problemas de nutrición incluyen siempre decisiones y prácticas

inadecuadas. Ejemplo de ello, es no interpretar la información nutricional contenida en las

etiquetas de los alimentos.

“Solo el 1.2% de los consumidores comprende el uso e interpreta la información nutricional

de los alimentos”. (Villalpando, 2012)

La educación nutricional es un paso importante para enseñar a los consumidores a elegir

alimentos saludables.

Trabajando sobre nuestros sistemas alimentarios, sobre la forma en la que producimos,

recolectamos, almacenamos, transportamos, transformamos y distribuimos alimentos,

podemos mejorar nuestra dieta, nuestra salud y nuestro impacto sobre los recursos naturales.

Los nuevos desafíos, como el cambio climático, la sostenibilidad ambiental y los rápidos

cambios tecnológicos, están transformando el sistema alimentario.

2.2. Open Data

Compartir información se está volviendo cada vez más fácil gracias al avance de las

comunicaciones, pero también gracias a la mejora de los sistemas de almacenamiento y

análisis, que permiten extraer datos útiles con mayor sencillez.

“El Open Data permite que los datos puedan ser accedidos, usados y redistribuidos por

cualquier persona.” (The Open Data Foundation, 2012)

Compartir datos es importante porque los datos recopilados para una tarea específica pueden

Page 13: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 13 -

tener valor para otras personas u organizaciones en diferentes contextos y / o por diferentes

razones.

“Cuanto mayor es el grado de apertura de los datos, mayor es el tamaño y la diversidad de la

comunidad que accede a ellos. Así, y de acuerdo al efecto multiplicador de compartir en la

red, el valor de un dataset se incrementará cuanto más fácil sea acceder a él y reutilizarlo.”

(Gartner, 2014)

“El Open Data contribuye a:

Transparencia y control democráctico

Participación

Autoempoderamiento

Mejoramiento o creación de nuevos productos y servicios

Innovación

Mejoramiento en la eficiencia y eficiencia de los servicios públicos

Medición del impacto de políticas

Nuevos conocimientos a partir de fuentes de datos combinadas y patrones en grandes

volúmenes de datos” (opendatahandbook, 2014)

Los datos abiertos pueden ser claves para el sistema alimentario global.

“Durante la conferencia G8 llevada a cabo en Londres en Octubre del 2013, fue presentada la

Global Open Data in Agriculture and Nutrition (GODAN).” (Jellema, Meijninger, &

Addison, 2015)

El objetivo de esta iniciativa es la construcción de políticas y el apoyo institucional para la

apertura de datos relevantes para la agricultura y la alimentación en todo el sector público y

Page 14: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 14 -

privado que permitan alcanzar seguridad alimentaria y nutricional a nivel mundial.

“Los datos abiertos son cruciales para combatir la inseguridad alimentaria y construir un

sistema agrícola sostenible” (Schmidhuber, 2014)

Hoy en día, diversos organismos y países trabajan sobre programas que intentan mejorar la

dieta y aumentar los niveles de nutrición a través de un enfoque centrado en las personas y

los datos.

En 2008, la Organización de las Naciones Unidas para la Alimentación y la Agricultura

(FAO) lanzó CIARD (Coherence in Information for Agricultural Research for Development),

un movimiento global dedicado a la apertura sin restricciones del conocimiento agrícola.

El conocimiento agropecuario es un impulsor clave del crecimiento económico y resulta

esencial para lograr la seguridad alimentaria.

“El interés en garantizar la apertura de los datos agrícola y nutricional está ganando impulso

y dos grandes iniciativas de trabajo como GODAN y CIARD están considerando la unión de

sus esfuerzos” (Sabato, 2014)

El Banco Mundial, continuando con su iniciativa de apertura de datos, lanzo en Octubre de

2012 HealthStats, un nuevo portal web con datos sobre salud, nutrición y población (HNP), a

través del cual es posible poder explorar, visualizar, explotar y descargar sus datos.

El sitio web incluye:

Visualización de datos animados que muestran las tendencias de las últimas décadas.

Nueva base de datos de población históricos y proyectados, y estimaciones.

Posibilidad de intercambio a través de redes sociales y correo electrónico.

Más que dedicar esfuerzos a generar aplicaciones a partir de los datos, resulta sin duda más

beneficioso ofrecerlos vía APIs (Application Programming Interface).

Page 15: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 15 -

Por ejemplo, Spoonacular pone a disposición de desarrolladores de aplicaciones y empresas,

una API que permite acceder a más de 330k recetas, 80k alimentos y 2000 ingredientes

diferentes. Haciendo uso de ontología de alimentos construye relaciones semánticas entre

ingredientes, recetas y alimentos. Cuenta con un buscador semántico que permite hacer uso

del lenguaje natural para realizar consultas, como "pasteles sin gluten sin azúcar" o

"magdalenas veganas bajas en grasa". También ofrece la posibilidad de calcular

automáticamente la información nutricional para cualquier receta, analizar los costos de

recetas, visualizar las listas de ingredientes, encontrar recetas a base de dietas especiales,

requerimientos nutricionales, o ingredientes favoritos, clasificar recetas en tipos, o incluso

calcular un plan de comidas completo.

Gracias a ello, los desarrolladores y/o empresas pueden crear diferentes tipos de aplicaciones

de alimentos y en especial de nutrición.

Por otro lado, el departamento de agricultura de los Estados Unidos (USDA) expone sus

datos a través de una API que permite interactuar con su base de datos de nutrientes y

alimentos (NDB). Gracias a esta apertura, cualquier persona puede acceder y hacer uso de

datos referidos a nutrición. Pero esto no siempre resulta así, ya que “Para hacer efectivo el

acceso a los datos por parte de cualquier persona es necesario crear un marco común que:

Permita localizar de forma sencilla las fuentes de datos

Utilice un lenguaje estándar para la publicación de datos

Permita trabajar con datos de calidad de manera amigable a personas no expertas en

áreas de programación o análisis de datos” (Torralba, 2014)

Aunque la cantidad de datos de libre acceso, está en constante aumento, todavía hay desafíos

relacionados con la gestión de datos, la concesión de licencias, la interoperabilidad y la

explotación. En este sentido, es necesario desarrollar políticas y prácticas en torno a los datos

abiertos.

Pese a las barreras anteriormente mencionadas, una estrategia de apertura de datos madura y

responsable permite cosechar grandes beneficios.

Page 16: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 16 -

Los datos son esenciales para una buena toma decisiones y si bien, hoy en día contamos con

menos restricciones de derechos de autor, patentes u otras mecanismos de control para

acceder a diversas fuentes de datos, es importante que podamos extraer conocimiento de

ellos. Contar con más datos no siempre es mejor. Para agregar valor es necesario extraer

conocimiento de esos datos y traducir ese conocimiento en nuevos o mejores servicios.

2.3. Big Data

El Big Data, es un concepto que hace referencia al almacenamiento de grandes cantidades de

datos y a los procedimientos usados para encontrar patrones repetitivos dentro de ellos. Se

caracteriza por el crecimiento constante del volumen de datos, la naturaleza variable de los

mismos y la velocidad con la que necesitan ser procesados para ofrecer una rápida respuesta.

“La explotación del Big Data, entendido como activos de información, demandan soluciones

innovadoras y eficientes que ayuden a mejorar el conocimiento y la toma de decisiones.”

(Laney, 2014)

“El Cloud es un facilitador del Big Data y el Internet de las Cosas (IoT), un nuevo

detonante.” (Bastión, 2014)

Así mismo, la explosión de la generación de datos en las redes sociales, a través de las cuales

los ciudadanos se convierten en productores activos de información y los dispositivos

móviles que ofrecen automáticamente información de tiempo y posición, enriqueciendo así

cualquier fuente de información, son otros de los principales orígenes de la ingente cantidad

de información que se genera diariamente.

Las dificultades más habituales vinculadas a la gestión de estas cantidades de datos se centran

en la recolección y el almacenamiento, búsqueda, compartición, análisis, y visualización.

Sin embargo, y en palabras de David Newman, “si bien el Big Data hace que las

organizaciones sean más inteligentes, el open data es lo que conseguirá que realmente se

obtengan más beneficios en el entorno altamente competitivo en el que nos encontramos.”

Page 17: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 17 -

(Newman, 2014)

Efectivamente, Big Data nos permite comprender qué hay en nuestros datos, mientras que

Open Data permite publicar información para que esta sea transformada en conocimiento.

La conjunción de ambas tecnologías permite la gestión del conocimiento.

En este sentido, “IBM planea lanzar su primer centro de excelencia europeo Watson Health,

que tendrá su sede en Milán, Italia, para respaldar la iniciativa del gobierno de Italia de

establecer en este país un polo internacional de investigación avanzada en Genómica, Big

Data, Envejecimiento y Nutrición, que permita desarrollar una nueva generación de

aplicaciones y soluciones de salud basadas en datos” (IBM, 2016)

IBM Watson es un sistema informático de inteligencia artificial que es capaz de responder a

preguntas formuladas en lenguaje natural. Integra múltiples fuentes de datos (enciclopedias,

diccionarios, tesauros, artículos de noticias, obras literarias, taxonomías, ontologías, etc.) para

encontrar en ellas patrones desconocidos, conexiones ocultas, etc.

Diseñado para permitir el procesamiento de lenguajes naturales, la recuperación de

información, la representación del conocimiento, el razonamiento automático, y

el aprendizaje automático, hace uso de estructuras de computación distribuida como Hadoop

y cuenta ciento de técnicas diferentes para analizar el lenguaje natural, identificar fuentes,

encontrar y generar hipótesis, buscar y puntuar evidencias, combinar y clasificar hipótesis.

En el área de alimentación y nutrición, Chef Watson, una aplicación web desarrollada por

IBM y la firma Bon Appétit que hace uso del motor ofrecido por Watson. Esta aplicación

dirigida al ámbito culinario permite inventar recetas innovadoras a partir de los

conocimientos aprendidos del análisis de las más de 10k recetas provenientes de la base de

datos Bon Appétit, además de que permite conocer cómo se utilizan los ingredientes en

diferentes platos y estilos de cocina. Esta información también se combina con información

acerca de la composición de los alimentos y las preferencias o restricciones dietéticas

(enfermedad celiaca, alergia o sensibilidad a los alimentos) por lo que les permite excluir

ingredientes específicos, permitiendo a la gente para inspirar su imaginación culinaria sin

Page 18: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 18 -

importar la dieta que siguen.

Neutrino, es otra aplicación que se beneficia de las características de IBM Watson con el

objetivo de mejorar la salud de las madres embarazadas y la salud de sus bebés. Neutrino

ofrece consejos de nutrición personal en tiempo real incluyendo referencias científicas que

son la base para las conclusiones del Neutrino.

“Escribe la pregunta ¿Cuánto café puedo tomar cuando estoy embarazada? En un buscador

Web tradicional, y obtendrás millones de páginas web con infinidad de respuestas y muchas

de ellas contradictorias. Escribe o formula la misma pregunta en Neutrino y obtendrás una

respuesta mucho más científica, útil y semántica” (Hamm, 2015)

Queda en evidencia que nos encontramos ante un sistema experto, que hace uso de las

bondades de IBM Watson, la plataforma tecnológica de computación cognitiva pionera que

permite a los sistemas comprender el mundo de la manera que lo hacemos los humanos: a

través de los sentidos, el aprendizaje y la experiencia, pero que a diferencia de estos, es capaz

de poder analizar grandes volúmenes de información y obtener resultados en tiempo real.

La arquitectura Big Data (generalizada de las soluciones de Business Inteligencie que existen

hoy en día) está compuesta generalmente por cinco capas: recolección de datos,

almacenamiento, procesamiento de datos, visualización y administración. El alcance de este

trabajo comprende tres de las cinco capas:

Capa de Arquitectura Tecnología empleada

Visualización Apache Zeppelin

Procesamiento y Análisis Apache Spark

Almacenamiento MongoDB

Page 19: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 19 -

2.3.1. Apache Zeppelin

2.3.1.1. Generalidades

Zeppelin es un proyecto basado en el concepto de web notebook, que permite a los científicos

de datos realizar análisis interactivos y colaborativos posibilitando la obtención de datos de

múltiples fuentes y la utilización de diferentes tecnologías y de lenguajes de programación,

como ser: Shell, Spark, SparkSQL, Hive, Elasticsearch, R, etc.

Ilustración 1 - Zeppelin integración

Page 20: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 20 -

Un web notebook es una aplicación web que permite crear y compartir documentos que

pueden contener código interactivo, fórmulas matemáticas, gráficos y visualizaciones, texto

con formato, etc. Por su naturaleza web, permiten trabajar sobre un interfaz web en lugar de

sobre una Shell.

Ilustración 2 - Zeppelin web notebook

Los notebooks en Zeppelin son multipropósito, por lo que sobre ellos es posible:

Obtener datos

Descubrir datos

Analizar datos

Visualizar datos

Compartir datos

Page 21: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 21 -

Zeppelin ofrece varias ventajas:

Interfaz simple e intuitiva

Se integra con múltiples tecnologías y lenguajes.

Los notebooks pueden ser creados en varios lenguajes

Interfaz simple e intuitiva (construida sobre Bootstrap y AngularJS)

Se integra con herramientas de BigData como Hadoop y Spark

Permite visualizar los datos mediante diferentes tipos de graficas

Permite compartir los notebooks con diferentes colaboradores

Permite publicar los resultados para que puedan ser embebidos en websites,

webapps,reportes, etc.

Tecnología 100% Open Source.

Está construido sobre una arquitectura modular y basada en intérpretes, que permite la

integración con múltiples lenguajes y tecnologías de backend, como por ejemplo:

Apache Hive QL

ApacheSpark (SQL, Scala and Python)

ApacheFlink

Postgres

Pivotal HAWQ

Page 22: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 22 -

Shell

Apache Tajo

AngularJS

Apache Cassandra

Apache ignite

Apache Phoenix

Apache Geode

Apache Kylin

Apache Lens

Ofrece también la posibilidad de crear e implementar nuestros propios intérpretes.

Ilustración 3 - Zeppelin arquitectura

Page 23: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 23 -

2.3.1.2. Descarga e instalación

Apache Zeppelin actualmente se encuentra bajo Incubación, la fase de preparación de ASF

(Apache Software Foundation) para los productos de código abierto Apache, por lo que la

liberación de versiones es constante.

Existen dos alternativas de instalación:

1. Descargar los binarios de https://zeppelin.incubator.apache.org/download.html

2. Construir los binarios a partir del código subido al repositorio

Para este proyecto, se construirá los binarios a partir del último del código para asegurar tener

los cambios más recientes.

Primeramente, se deben instalar las dependencias necesarias para poder construir los binarios:

sudo apt-get update

sudo apt-get install git

sudo apt-get install openjdk-7-jdk

sudo apt-get install npm

sudo apt-get install libfontconfig

# install maven

wget http://www.eu.apache.org/dist/maven/maven-3/3.3.3/binaries/apache-maven-3.3.3-bin.tar.gz

sudo tar -zxf apache-maven-3.3.3-bin.tar.gz -C /usr/local/

sudo ln -s /usr/local/apache-maven-3.3.3/bin/mvn /usr/local/bin/mvn

Una vez preparados los requerimientos, es necesario clonar el repositorio para descargar los

sources:

git clone https://github.com/apache/incubator-zeppelin.git /usr/zeppelin

Apache Zeppelin trabaja con varios intérpretes: Spark, Ignite, Scalding. Cada intérprete

requiere de diferentes opciones de instalación. En este proyecto solo instalaremos el

intérprete de Spark.

mvn clean package -Pspark-1.4 -Dhadoop.version=2.4.0 -Phadoop-2.4 -DskipTests

Page 24: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 24 -

2.3.1.3. Configuración y uso básico

Apache Zeppelin puede ser configurado a través de:

1. Variables de entorno (conf/zeppelin-env.sh)

2. Archivo de configuración (conf/zeppelin-site.xml)

Los detalles de cada configuración pueden ser consultados en

https://zeppelin.incubator.apache.org/docs/0.5.5-incubating/install/install.html

Zeppelin puede ser iniciado y detenido a través de los siguientes comandos:

bin/zeppelin-daemon.sh start

bin/zeppelin-daemon.sh stop

Ilustración 4 - Apache Zeppelin UI

Page 25: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 25 -

2.3.2. Apache Spark

2.3.2.1. Generalidades

Apache Spark es un framework open source para procesamiento distribuido. Combina un

sistema de computación distribuida a través de clúster de ordenadores con una manera

sencilla de escribir programas. Puede trabajar en modo Standalone o modo clúster

sobre Apache Mesos o Hadoop YARN.

Ilustración 5 - Integración Spark – Hadoop a través de YARN

Spark está diseñado para ejecutarse por defecto en memoria, lo que permite escribir

algoritmos iterativos sin escribir en disco un conjunto de resultados después de cada iteración

como lo haría MapReduce.

MapReduce, revolucionó la manera de trabajar con grandes conjuntos de datos ofreciendo un

modelo relativamente simple para escribir programas que pueden ejecutar paralelamente en

cientos y miles de máquinas al mismo tiempo. Gracias a su arquitectura, MapReduce logra

prácticamente una relación lineal de escalabilidad, ya que si los datos crecen es posible

añadir más máquinas y tardar lo mismo.

Spark mantiene la escalabilidad lineal y la tolerancia a fallos de MapReduce, pero amplía sus

bondades gracias a varias funcionalidades:

DAG (Directed Acyclic Graph): un grafo dirigido que no tiene ciclos.

Page 26: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 26 -

RDD (Resilient Distributed Dataset): Un conjunto de datos inmutables, distribuidos y

flexibles.

Se caracteriza por:

Ser una plataforma de código abierto con una comunidad muy activa (el volumen de

líneas de código y el número de contribuyentes crece año a año)

Ser una plataforma rápida (gracias al procesamiento de datos en memoria)

Ser una plataforma unificada para gestionar datos (Una única plataforma para soportar

procesamiento en lotes, procesamiento en tiempo real, algoritmos de Machine

Learning, y procesamiento gráfico).

Disponer de una consola interactiva (Es posible analizar los datos de forma

interactiva, con la conexión a los clústeres.)

Proporcionar un conjunto de APIs para trabajar con datos (Es posibles desarrollar

aplicaciones en Scala, Java, Python que aprovechen las características de

procesamiento distribuido ofrecido por Spark)

Spark está una conformada por diferentes plataformas, es por ello que es considerada una

tecnología hibrida.

Ilustración 6 - El ecosistema de proyectos en Spark. Fuente: Databricks

Page 27: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 27 -

Spark SQL: permite la consulta de datos estructurados utilizando lenguaje SQL o una

API, que se puede usar con Java, Scala, Python o R.

Spark Streaming: permite gestionar grandes datos en tiempo real. Esto facilita que

los datos se analicen según van entrando, sin tiempo de latencia y a través de un

proceso de gestión en continuo movimiento.

MLlib (Machine Learning): contiene algoritmos que dotan a Apache Spark de

muchas utilidades, como la regresión logística y máquinas de vectores de

soporte (SVM); modelos de árbol de regresión bayesiana; técnicas de mínimos

cuadrados; modelos de mezclas gausianas; análisis de conglomerados de K

medias; asignación latente de Dirichlet (LDA); descomposición en valores

singulares (SVD); análisis de componentes principales (ACP); regresión lineal;

regresión isotónica; etc.

GraphX: un framework de procesamiento gráfico. Proporciona una API para la

elaboración de grafos con los datos.

El gran rendimiento ofrecido Spark se debe en gran parte a su Arquitectura.

Ilustración 7 - Spark arquitectura

Page 28: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 28 -

Las aplicaciones para Spark se ejecutan como un grupo independiente de procesos en

clústeres, coordinados por el SparkContext. El SparkContext representa el contexto básico de

Spark, y a partir de él se crean el resto de variables que maneja el framework.

El SparkContext puede conectarse a gestores de clúster que son los encargados de asignar

recursos en el sistema.

Una vez conectados, Spark puede encargar que se creen ejecutores (executors) encargados de

la computación en los nodos del clúster.

Los trozos de código propio de los que se encargan estos ejecutores son

denominados tasks o tareas.

Mediante el cache se almacenan los datos en memoria para que no sea necesario acceder a

ellos en disco.El almacenamiento de los datos en memoria caché hace que los algoritmos de

machine learning ejecutados que realizan varias iteraciones sobre el conjunto de datos de

entrenamiento sea más eficiente. Además, se pueden almacenar versiones transformadas de

dichos datos.

Spark ofrece la flexibilidad suficiente para escoger qué datos quedan en memoria y cuáles

pueden volcarse al disco duro porque no son necesarios en ese momento. Eso libera mucho el

procesamiento, aumentando su eficacia.

Ventajas

Rapidez: Spark es capaz de ejecutar los trabajos por lotes de procesamiento de entre

10 a 100 veces más rápido que el motor MapReduce, principalmente mediante la

reducción del número de escrituras y lecturas de disco.

Procesamiento Real-Time: En lugar de simplemente procesar un lote de datos

almacenados, como es el caso de MapReduce, Spark también puede manipular los

datos en tiempo real utilizando Spark Streaming. Esta capacidad permite que las

aplicaciones pasen datos a través de una función de software – por ejemplo, para

llevar a cabo análisis al mismo tiempo que los datos son recogidos.

Page 29: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 29 -

Alta tolerancia a fallos: En lugar de la persistencia o la existencia de checkpoints en

resultados intermedios, Spark recuerda la secuencia de operaciones que llevó a un

determinado conjunto de datos. Así que cuando falla un nodo, Spark reconstruye el

conjunto de datos basado en la información almacenada. Esto proporciona una cierta

estabilidad que permite que no se caiga todo un proceso cuando aparecen fallos en

alguno de los nodos.

Facilidad de uso: La implementación tanto de procesamiento batch como realtime

sobre la capa de Spark elimina gran parte de la complejidad de MapReduce, y

simplifica el despliegue, mantenimiento y desarrollo de aplicaciones.

Conectividad, multiplataforma: Un conjunto de APIs para el motor de ejecución de

Spark están disponibles en Java, Python y Scala, lo que permite a los desarrolladores

escribir aplicaciones que se pueden ejecutar sobre la capa de Spark en estos lenguajes.

Spark puede interactuar con los datos en el HDFS (Sistema de archivos de Hadoop),

la base de datos HBase Hadoop, el almacén de datos Cassandra y varias otras capas de

almacenamiento.

Con Spark, un programa típico se organiza de la siguiente manera:

1. A partir de una variable de entorno llamada context se crea un objeto RDD (Resilient

Distributed Dataset) leyendo datos de fichero, bases de datos o cualquier otra

fuente de información.

2. Una vez creado el RDD inicial se realizan transformaciones para crear más objetos

RDD a partir del primero. Dichas transformaciones se expresan en términos de

programación funcional y no eliminan el RDD original, sino que crean uno nuevo.

3. Tras realizar las acciones y transformaciones necesarias sobre los datos, los objetos

RDD deben converger para crear el RDD final. Este RDD puede ser almacenado

Page 30: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 30 -

Cuando el programa comienza su ejecución crea un grafo similar al de la figura siguiente en

el que los nodos son objetos RDD y las uniones entre ellos son operaciones de

transformación. En la figura, las líneas rojas representan transformación y las verdes

operación.

Ilustración 8 - Tarea Spark grafo de ejecución

Page 31: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 31 -

El grafo de la ejecución es un DAG (Grafo Acíclico Dirigido) y, cada grafo es una unidad

atómica de ejecución. Un DAG no tiene ciclos, es decir, para cada nodo del grafo no hay un

camino directo que comience y finalice en dicho nodo. Un vértice se conecta a otro, pero

nunca a sí mismo.

Ilustración 9 - DAG (Directed Acyclic Graph)

En comparación con MapReduce, el cual crea un DAG con dos estados predefinidos (Map y

Reduce), los grafos DAG creados por Spark pueden tener cualquier número de etapas. Spark

con DAG es más rápido que MapReduce por el hecho de que no tiene que escribir en disco

los resultados obtenidos en las etapas intermedias del grafo. MapReduce, sin embargo, debe

escribir en disco los resultados entre las etapas Map y Reduce.

Page 32: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 32 -

Un RDD (Resilient Distributed Dataset) permite a los programadores realizar operaciones

sobre grandes cantidades de datos en clusters de una manera rápida y tolerante a fallos. Una

vez que los datos han sido leídos como objetos RDD en Spark, pueden realizarse diversas

operaciones mediante sus APIs. Los dos tipos de operaciones que se pueden realizar son:

Transformaciones: tras aplicar una transformación, obtenemos un nuevo y

modificado RDD basado en el original.

Acciones: una acción consiste simplemente en aplicar una operación sobre un RDD y

obtener un valor como resultado, que dependerá del tipo de operación.

Dado que las tareas de Spark pueden necesitar realizar diversas acciones o transformaciones

sobre un conjunto de datos en particular, es altamente recomendable y beneficioso en cuanto

a eficiencia el almacenar RDDs en memoria para un rápido acceso a los mismos.

Spark define dos tipos de operaciones de transformación:

Narrow transformation: se utiliza cuando los datos que se necesitan tratar están en

la misma partición del RDD y no es necesario realizar una mezcla de dichos datos

para obtenerlos todos. Algunos ejemplos son las

funciones filter(), sample(), map() o flatMap().

Wide transformation: se utiliza cuando la lógica de la aplicación necesita datos que

se encuentran en diferentes particiones de un RDD y es necesario mezclar dichas

particiones para agrupar los datos necesarios en un RDD determinado. Ejemplos

de wide transformation son: groupByKey() o reduceByKey().

Page 33: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 33 -

Ilustración 10 - Spark tipos de transformaciones

2.3.2.2. Descarga e instalación

Spark está construido sobre la Máquina Virtual de Java (JVM), por lo que el único pre-

requisito es tener instalado Java 6 o superior.

$ sudo add-apt-repository ppa:webupd8team/java

$ sudo apt-get update

$ sudo apt-get install oracle-jdk7-installer

A continuación instalamos las herramientas para trabajar con Scala, SBT:

$ sudo apt-get install sbt

Apache Spark puede descargarse desde http://spark.apache.org/downloads.html. Una vez

descargada la versión, procedemos a compilar y ensamblar usando SBT:

$ tar -xvf spark-1.0.1.tgz

$ cd spark-1.0.1

$ sbt/sbt clean compile

$ sbt/sbt assembly

Page 34: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 34 -

Spark viene con una consola interactiva:

o bin/pyspark (interprete interactivo de Python con Spark)

o bin/spark-shell (interprete interactivo de Scala con Spark)

$ ./bin/spark-shell

Ilustración 11 - Consola interactiva spark-shell

2.3.2.3. Configuración y uso básico

Spark ofrece tres alternativas de configuración:

o Spark properties: controlan la mayoría de los parámetros de aplicación y se pueden

configurar mediante el uso de un objeto SparkConf, o a través de propiedades de

sistema Java.

Page 35: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 35 -

o Environment variables: establecen la configuración (por nodo) a través del script

conf/spark-env.sh

o La configuración referente al logging puede ser manipulada a través del archivo

log4j.properties.

En el sitio oficial de Apache Spark puede encontrarse mayor detalle referido a la

configuración (http://spark.apache.org/docs/latest/configuration.html).

A continuación, se presenta un ejemplo básico de uso:

scala> val textFile = sc.textFile("README.md")

textFile: spark.RDD[String] = spark.MappedRDD@2ee9b6e3

scala> textFile.count() // Number of items in this RDD

res0: Long = 126

scala> textFile.first() // First item in this RDD

res1: String = # Apache Spark

scala> textFile.filter(line => line.contains("Spark")).count() // How many lines

contain "Spark"?

res3: Long = 15

2.3.3. MongoDB

2.3.3.1. Generalidades

MongoDB es una base de datos NoSQLde código abierto orientada a documentos. Esto

quiere decir que en lugar de guardar los datos en registros como en el modelo relacional,

guarda los datos en documentos.

Estos documentos son almacenados en BSON, que es una representación binaria de JSON

(JavaScript Object Notation) y permiten que la integración de los datos en ciertas

aplicaciones sea más fácil y rápida

Page 36: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 36 -

Su núcleo está basado en el lenguaje Javascript, por lo que se puede usar operaciones escritas

en este lenguaje (por lo general objetos JSON) para hacer consultas en lugar de SQL.

Se modelo se basa en el principio de almacenar los datos en una estructura tipo clave-valor.

Los valores de estas claves son estructuras tipo JSON (llamados documentos), mientras que

las claves son llamados colecciones.

Las colecciones en MongoDB son algo parecido a las tablas en un modelo de base de datos

relacional. Son un grupo de documentos relacionados.

La estructura de almacenamiento es tan flexible que los documentos de una misma colección

pueden tener esquemas o estructuras diferentes, inclusive documentos con campos en común

no tienen necesariamente que tener el mismo tipo de dato.

Ilustración 12 - MongoDB colecciones y documentos

Entre sus principales características podemos nombrar:

Consultas Ad hoc

MongoDB soporta la búsqueda por campos, consultas de rangos y expresiones regulares. Las

consultas pueden devolver un campo específico del documento pero también puede ser una

función JavaScript definida por el usuario.

Page 37: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 37 -

Indexación

Cualquier campo en un documento de MongoDB puede ser indexado, al igual que es posible

hacer índices secundarios. El concepto de índices en MongoDB es similar a los encontrados

en base de datos relacionales.

Replicación

MongoDB soporta el tipo de replicación primario-secundario. Cada grupo de primario y sus

secundarios se denomina replica set. El primario puede ejecutar comandos de lectura y

escritura. Los secundarios replican los datos del primario y sólo se pueden usar para lectura o

para copia de seguridad, pero no se pueden realizar escrituras. Los secundarios tienen la

habilidad de poder elegir un nuevo primario en caso de que el primario actual deje de

responder.

Balanceo de carga

MongoDB se puede escalar de forma horizontal usando el concepto de shard. El

desarrollador elige una clave de sharding, la cual determina cómo serán distribuidos los datos

de una colección. Los datos son divididos en rangos (basado en la clave de sharding) y

distribuidos a través de múltiples shard. Cada shard puede ser una réplica set. MongoDB

tiene la capacidad de ejecutarse en múltiple servidores, balanceando la carga y/o replicando

los datos para poder mantener el sistema funcionando en caso que exista un fallo de

hardware. La configuración automática es fácil de implementar bajo MongoDB y se pueden

agregar nuevas servidores a MongoDB con el sistema de base de datos funcionando.

Almacenamiento de archivos

MongoDB puede ser utilizado como un sistema de archivos, tomando la ventaja de la

capacidad que tiene MongoDB para el balanceo de carga y la replicación de datos utilizando

múltiples servidores para el almacenamiento de archivos. Esta función se llama GridFS y es

más bien una implementación en los drivers, no en el servidor, por lo que está incluido en los

drivers oficiales de que MongoDB desarrolla. Estos drivers exponen funciones y métodos

para la manipulación de archivos y contenido a los desarrolladores. En un sistema con

Page 38: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 38 -

múltiple servidores, los archivos pueden ser distribuidos y replicados entre los mismos y de

una forma transparente, de esta forma se crea un sistema eficiente que maneja fallos y

balanceo de carga.

Agregación

MongoDB proporciona un framework de agregación que permite realizar operaciones

similares a las que se obtienen con el comando SQL "GROUP BY". El framework de

agregación está construido como un pipeline en el que los datos van pasando a través de

diferentes etapas en los que son modificados, agregados, filtrados y formateados hasta

obtener el resultado deseado. Todo este procesado utiliza los índices existentes y se produce

en memoria. Asimismo, MongoDB proporciona una función MapReduce puede ser utilizada

para el procesamiento por lotes de datos y operaciones de agregación.

Ejecución de JavaScript del lado del servidor

MongoDB tiene la capacidad de realizar consultas utilizando JavaScript, haciendo que estas

sean enviadas directamente a la base de datos para ser ejecutadas.

Gran parte de la escalabilidad, rendimiento y alta disponibilidad ofrecida por MongoDB se

debe gracias a sus estrategias ofrecidas para Replicación, Fragmentación y Agregación.

Replicación

MongoDB ofrece alta disponibilidad de datos gracias al uso de replicación. La replicación

permite que los datos estén disponibles en más de un servidor a la vez, para que en el caso de

que uno falle por cualquier motivo, los datos se puedan leer o escribir usando otro servidor.

Al grupo de instancias que poseen la misma información se les denomina replica set o grupo

de replicación. Un replica set en MongoDB está compuesto por 2 tipos principales de

miembros, instancias primarias y secundarias, teniendo una única instancia primaria la cual

aceptará todas las operaciones de escritura provenientes de los sistemas cliente. Las

Page 39: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 39 -

operaciones de lectura son dirigidas por defecto a la instancia primaria; sin embargo es

posible configurar la lectura a instancias secundarias.

Ilustración 13 - Instancia Primaria Replica Set MongoDB

Estas operaciones que alteran los datos son escritas en un archivo llamado oplog o bitácora de

operaciones, los miembros secundarios replican este archivo del miembro primario y ejecutan

las mismas operaciones sobre su conjunto de datos, esto permite tener la misma información

en las diferentes instancias.

Ilustración 14 - Instancias Secundarias Replica Set MongoDB

Page 40: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 40 -

Debido a que el procedimiento de replicación se realiza de manera asíncrona, es posible que

clientes que consulten directamente a miembros secundarios no obtengan la información más

reciente.

La arquitectura de los replica set dicta que los miembros deben enviar latidos o pings entre

ellos cada 2 segundos, si en un período de 10 segundos el latido no es devuelto, se marca al

miembro en cuestión como inaccesible.

Cuando no existe un miembro primario, este deja de responder o este es obligado a darse de

baja, es necesaria la elección de un nuevo miembro primario. Dicha elección se basa inicial y

principalmente en la comparación de prioridades de aquellos miembros elegibles (esta

prioridad es por defecto 1, esto para darles a todos los miembros la posibilidad de ser

elegidos). Otro aspecto a considerar es la capacidad que tiene el candidato para conectarse

con la mayoría de los miembros en el grupo.

Fragmentación (Sharding)

La fragmentación de datos permite separar los datos en diferentes instancias o fragmentos. En

MongoDB la unidad de base de datos que se fragmenta son las colecciones. Por lo tanto una

colección que sea declarada como fragmentada podría poseer distintos documentos en los

fragmentos del cluster. Esta estrategia, permite escalar la base de datos horizontalmente.

Ilustración 15 - Arquitectura cluster fragmentación

Page 41: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 41 -

o Aplicación y Driver

Las aplicaciones cuando necesitan comunicarse con la base de datos de MongoDB lo hacen a

traves de un driver, estos tienen implementados los métodos y protocolos necesarios para

comunicarse correctamente con la base de datos encapsulando la complejidad del proceso al

desarrollador.

o Fragmento

Un fragmento o shard es aquel que posee los datos fragmentados de las colecciones que

componen la base de datos como tal, este suele estar compuesto por un replica

set preferiblemente; sin embargo en ambientes de desarrollo podría ser una única instancia

por fragmento.

o Router

Debido a que las aplicaciones ven la base de datos como un todo, el router es el encargado de

recibir las peticiones y dirigir las operaciones necesarias al fragmento o fragmentos

correspondiente(s).

o Servidores de configuración

Este tipo de instancias se encargan de almacenar la metadata del cluster de fragmentación, es

decir, qué rangos definen un trozo de una colección y qué trozos se encuentran en qué

fragmento. Esta información es almacenada en caché por el router para lograr un óptimo

tiempo de procesamiento.

Aggregation

El proceso de agregación define una serie de operaciones (pipeline) a las cuales se somete

una colección para obtener un conjunto de resultados calculados, formateados y/o filtrados de

manera diferente a como se encuentran en los documentos, con el objetivo de agrupar y/o

calcular datos que residen en los documentos de acuerdo a una necesidad particular.

Page 42: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 42 -

Asimismo, MongoDB proporciona una función MapReduce que puede ser utilizada para el

procesamiento por lotes de datos (batch-processing) y operaciones de agregación.

Ilustración 16 –MongoDB aggregate

Ilustración 17 - MongoDB MapReduce

Page 43: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 43 -

2.3.3.2. Descarga e instalación

MongoDB se encuentra disponible para plataformas: Mac OS X, Linux y Windows. A

continuación describiremos la instalación, configuración y uso básico de MongoDB sobre

una plataforma Linux basado en Debian similar a la propuesta por este trabajo.

Primero debemos importar la llave pública GPG y crear el archivo de fuentes:

$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10

...

$ echo 'deb http://downloads-distro.mongodb.org/repo/debian-sysvinit dist 10gen'

| sudo tee /etc/apt/sources.list.d/mongodb.list

...

A continuación se deben actualizar los repositorios y proceder a la instalación:

$ sudo apt-get update

...

$ sudo apt-get install mongodb-10gen

...

2.3.3.3. Configuración y uso básico

MongoDB ofrece ofrecen varias opciones para el uso de SSL, configuración de

replicación, clusterización, etc. que pueden ser explicitadas a través de un archivo de

configuración:

/etc/mongodb.conf

Para gestionar el servicio de MongoDB basta con ejecutar:

$ sudo /etc/init.d/mongodb [ start | stop | restart ]

Page 44: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 44 -

2.4. Aplicaciones de Big Data en el campo de la nutrición.

“Existen varias maneras en las cuales el Big Data puede ser aprovechado en la investigación

nutricional:

Exploración de información de alimentos en venta

Seguimiento del comportamiento alimentario a través de aplicaciones para

Smartphone.

Data linkages

Análisis de datos publicitarios de los fabricantes de alimentos sobre redes sociales”

(Mhurchu, Big Food, Obesity & Poor Diets: Big Data Solutions, 2013)

A continuación, se presentan algunos casos de estudio que han sido formulados y diseñados

haciendo uso de Big Data:

NutriTrack: Un programa que comenzó en 2013 y que crece año a año. Consta del

desarrollo y actualización de datos sobre los alimentos procesados que se encuentran a

la venta en Nueva Zelanda, incluida la composición nutricional, el tamaño del envase,

el tamaño de la porción, el etiquetado y los ingredientes. Los datos son recogidos a

través de una aplicación para Smartphone. Este estudio permitió a los investigadores

comparar el contenido de sal en los productos entre seis países y del cual se ha

encontrado que el contenido de sal en los productos de Nueva Zelanda son más altos

que en el Reino Unido y Francia.

FoodSwitch: Una aplicación para Smartphone que permite a los usuarios escanear los

códigos de barras de productos y obtener indicadores acerca del contenido de sal,

grasa y azúcar de los alimentos envasados. La aplicación ofrece opciones de

productos más saludables y permite que los usuarios puedan compartir información a

través de redes sociales. La aplicación se alimenta de múltiples fuentes ya que permite

que los usuarios sean quienes ingresen los productos al sistema desde su Smartphone.

Page 45: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 45 -

NutriSales: Un programa que alcanza a Nueva Zelanda y que comenzó en 2013 y

tiene planificado terminar en 2018. Compone varias fuentes de datos con el objetivo

de conocer la exposición de la población (tanto a nivel local como regional) al sodio,

grasas saturadas y azúcar presente en los alimentos procesados. Se basa en Nutritrack,

una fuente de datos local que permite conocer los nutrientes de los alimentos, una

fuente de nutrientes global y una base de datos local de venta de productos

alimenticios.

KidsCam: Este ensayo comenzó en 2014. El objetivo es medir la frecuencia y la

duración de la exposición de los niños en la publicidad de alimentos. La recolección

de datos finalizo en Julio de 2015 y en estos momentos la información ya se encuentra

lista para comenzar a ser analizada. Se analizarán cuatro millones de imágenes

publicitarias, con el objetivo de conocer en qué proporción la comida basura (junk

food), el alcohol y el tabaco contamina el entorno de los niños.

Estamos en las primeras etapas de una revolución mundial de nutrición. Las personas son

cada vez más conscientes de la relación entre la nutrición y la salud, y, gracias a Internet y a

la evolución tanto de las tecnologías, así como de nuevas prácticas como el Open y Big Data,

es posible disponer y colaborar con variadas fuentes de información que pueden ser utilizadas

para ayudar a vivir más saludablemente.

Explotar esta información con el objetivo de presentar indicadores que muestren el impacto

de los alimentos ultra-procesados en la salud y que permitan impulsar la reformulación de

los mismos con la idea de mejorar la salud de la población es el primer paso.

Page 46: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 46 -

3. DESARROLLO

No hay duda de que la industria alimentaria es una actividad que se ha globalizado. Hoy día

podemos encontrar una gran variedad de alimentos en los centros de alimentación, no sólo

por la gran cantidad de marcas, envases, tamaños, formas, sino en lo que se refiere a su

procedencia. Hoy en día, el consumidor encuentra fácilmente productos como frutas,

verduras, salsas, especias, refrescos, diversos tipos de snacks, derivados de lácteos, cereales,

u otros alimentos no tradicionales.

Estudiar la composición de estos productos distribuidos globalmente nos permite conocer los

patrones y hábitos alimentarios en cada región, así también como identificar tendencias

alimentarias.

Este trabajo se centra en el estudio de las descripciones de los productos encontradas en las

etiquetas de los mismos, con el objetivo de generar conocimiento, el cual es representado por

medio de un conjunto de indicadores alimentarios.

Los indicadores se diseñaron teniendo en cuenta una nota descriptiva publicada en Mayo de

2015 por la Organización Mundial de la Salud (OMS, 2015). En ella, la OMS nos ofrece un

compendio, que incluye consejos prácticos, de todos aquellos criterios que considera

necesarios y fundamentales para que nuestra alimentación cumpla el propósito de nutrirnos y

asegurarnos una vida con calidad.

3.1. Definición de variables e indicadores

3.1.1. Promedio de sal consumida por país

Indica que cantidad de gramos de sal que son consumidos en promedio cada 100 gramos de

alimento en cada país. Su valor esta expresado en gramos.

Se calcula en base a los campos sodium_100g y countries_en de la etiqueta de cada

producto.

Page 47: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 47 -

El campo sodium_100g expresa que proporción de sal (expresada en gramos) cada 100

gramos está presente en el producto. Por ejemplo, un valor de 1.11 en el campo sodium_100g

indica que cada 100 gramos de alimento 1.11 gramos de sal son aportados a la alimentación.

El campo countries_en contiene la lista de países en los cuales un producto está expuesto al

consumo. Los países están expresados en idioma ingles y separados por coma.

3.1.2. Promedio de azúcar consumida por país.

Indica que cantidad de gramos de azúcar que son consumidos en promedio cada 100 gramos

de alimento en cada país. Su valor esta expresado en gramos.

Se calcula en base a los campos sugar_100g y countries_en de la etiqueta de cada producto.

El campo sugar_100g expresa que proporción de azúcar (expresada en gramos) cada 100

gramos está presente en el producto. Por ejemplo, un valor de 10.4 en el campo sugar_100g

indica que cada 100 gramos de alimento 10.4 gramos de azúcar son aportados a la

alimentación.

El campo countries_en contiene la lista de países en los cuales un producto está expuesto al

consumo. Los países están expresados en idioma ingles y separados por coma.

3.1.3. Ranking de productos más grasos.

Indica que cantidad de gramos de grasas transgénicas que en promedio aporta cada categoría

de producto en 100 gramos de alimento. Su valor esta expresado en gramos y las categorías

son clasificados dentro de un ranking.

Se calcula en base a los campos trans-fat_100g y main_category_en de la etiqueta de cada

producto.

Page 48: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 48 -

El campo trans-fat_100g expresa que proporción de grasas transgénicas (expresada en

gramos) cada 100 gramos está presente en el producto. Por ejemplo, un valor de 7.6 en el

campo trans-fat_100g indica que cada 100 gramos de alimento 7.6 gramos de grasas

transgénicas son aportados a la alimentación.

El campo main_category_en indica la categoría a la que pertenece un producto y esta

expresada en idioma inglés.

3.1.4. Distribución de productos menos saludables

Refleja cómo se distribuyen los productos en cada región en base a su puntuación nutricional

y en base al porcentaje que representan del total de la población de productos en esa región.

Se calcula en base a los campos countries_en y nutrition-score-uk_100g de la etiqueta de

cada producto.

El campo countries_en contiene la lista de países en los cuales un producto está expuesto al

consumo. Los países están expresados en idioma ingles y separados por coma.

El campo nutrition-score-uk_100g representa el puntaje nutricional definido por la Agencia

de Normas Alimentarias del Reino Unido (Food Safety Agency, FSA) para ese producto.

En Marzo de 2006, la FSA presentó un diseño de etiquetado frontal que combina información

nutricional con un código de colores (semáforo nutricional). El modelo del semáforo

nutricional fue propuesto para permitir a los consumidores evaluar de manera simple y rápida

los niveles de los nutrientes en un producto y conocer cuáles de ellos tiene una composición

nutricional más acorde con las recomendaciones de la Agencia de Normas Alimentarias de

Reino Unido. (Bordonada, 2013)

El modelo utiliza seis nutrientes y la cantidad de fruta o vegetales contenida en 100 gramos

de un alimento para diferenciar entre los alimentos más y menos saludables.

Esto genera una puntuación única en la que los factores negativos (calorías, grasas saturadas,

Page 49: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 49 -

azúcar y sodio) se compensan con los puntos de factores positivos (proteínas, fibra y fruta

mínimamente procesada o vegetales).

Cada factor negativo contribuye de 0 a 10 puntos, y cada factor positivo contribuye de 0 a 5

puntos. El total de puntos positivos son restan del total de puntos negativos para generar una

puntuación (score) que, oscila entre -15 puntos para los alimentos más saludables y +40

puntos para los alimentos menos saludables.

Ilustración 18 – Modelo de puntuación nutricional definido por la FSA (Food Safety Agency)

3.2. Base de datos

La piedra angular sobre la que sustenta este trabajo es Open Food Facts, una base de datos

abierta y colaborativa que alberga información referida a productos alimenticios distribuidos

en todo el mundo. Estos datos están disponibles bajo licencia ODbL (Open Database

License).

La información en la base de datos constantemente es actualizada gracias a los aportes de una

comunidad global de usuarios y es por ello que la base de datos se encuentra implementada

sobre una base de datos NoSQL como MongoDB. Esta base de datos, de tipo documental le

confiere el rendimiento y escalabilidad que necesita para poder soportar la demanda creciente

Page 50: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 50 -

de los datos. También su esquema de datos flexible permite que los datos no tengan el mismo

conjunto de campos o estructura, lo que le confiere mayor agilidad y adaptabilidad a los

cambios.

Open Food Facts, también es colaborativa, por lo que cualquier persona con una cuenta de

usuario puede revisar, completar, corregir y agregar nuevos datos. Existe un control de

versiones, que permite que todos los cambios realizados sobre los datos de la base de datos

sean registrados.

3.2.1. Proceso de carga de datos

Los productos pueden ser incorporados a la base de datos por cualquier usuario a través de

alguna de estas dos opciones:

Aplicación Mobile

Aplicación Web

La aplicación Mobile permite a los usuarios escanear el código de barras de un producto,

para consultar la información del mismo, así también como tomar y enviar imágenes y datos

de los productos que se deseen incorporar a la base de datos. Se encuentra desarrollada en

HTML y Javascript y hace uso de Phonegap (Apache Córdoba) para portar la aplicación a

diferentes plataformas móviles. Así mismo puede ser descargada desde las tiendas de

aplicaciones (App. Store, Google Play, Windows Phone Store).

La aplicación Web, se encuentra desplegada en Internet. Permite buscar productos a través de

diferentes criterios de búsqueda y cargar la información de nuevos productos. Los resultados

de las consultas pueden ser visualizados a través de algunos indicadores built-in.

Page 51: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 51 -

Ilustración 19 - OpenFoodFacts Mobile

App.

Ilustración 20 - OpenFoodFacts Web App.

3.2.2. Importación de datos en una instancia local.

La información de la base de datos constantemente es actualizada por múltiples usuarios y

Open Food Facts publica sus datasets diariamente en 3 formatos diferentes:

Database dumps.

CSV exports.

RDF exports.

Para este trabajo, se creó una instancia local de la base de datos y se llevó a cabo la

importación de los datos contenidos en el database dump generado el 13 de Enero de 2016.

Page 52: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 52 -

# Start Database

mongod.exe --dbpath C:\Desarrollo\MongoDB\mongodb-win32-i386-3.0.4\data

# Restore Database from /openfoodfacts-mongodbdump/dump

## products.bson

## products.metadata.json

mongorestore -h 127.0.0.1 -d openfoodfacts

La base de datos creada localmente cuenta con una única colección donde reside la

información de los productos importados de Open Food Facts.

Ilustración 21 - Base de datos montada en una instancia local de MongoDB

3.2.3. Esquema de datos

Aunque MongoDB es schemaless (sin esquema), cada producto puede ser descripto por

medio de 159 campos (Ver Anexos) y se identifica unívocamente por su código de barra.

Los productos son representados en la base de datos por medio de documentos JSON

Page 53: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 53 -

(JavaScript Object Notation), pudiendo variar estos en lo que respecta a estructura.

{

...

"generic_name" : "Mini tabletas de chocolate negro con un 70% de cacao mínimo. Nota: El mismo código de barras coincide con otros chocolates similares",

...

"nutrition_score_warning_no_fiber" : NumberLong(1),

"manufacturing_places" : "Berlín,Alemania",

"nutriments" : {

"sodium" : "0.0196850393700787",

"sugars" : "27.9",

"sugars_value" : "27.9",

"carbohydrates_unit" : "g",

"fat_unit" : "g",

"proteins_unit" : "g",

"nutrition-score-fr_100g" : "23",

"fat" : "42.7",

"carbohydrates_value" : "33.5",

"proteins_serving" : "1.93",

"cocoa_serving" : "70",

"sodium_serving" : "0.00492",

"salt" : "0.05",

...

}

Extracto de un documento JSON contenido en la colección productos.

(Un ejemplo completo puede verse en la sección de Anexos)

La base de datos cuenta con una única colección de productos. Las colecciones en MongoDB

son contenedores para documentos de estructura o concepto similar. La colección productos

contiene la información referida a los productos.

Page 54: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 54 -

> db

openfoodfacts

> show collections

products

system.indexes

> db.products.stats()

{

"ns" : "openfoodfacts.products",

"count" : 81205,

"size" : 1193146012,

"avgObjSize" : 14693,

"numExtents" : 16,

"storageSize" : 1351812288,

"lastExtentSize" : 307535872,

"paddingFactor" : 1,

"paddingFactorNote" : "paddingFactor is unused and unmaintained in 3.0. It remains hard coded to 1.0 for compati

bility only.",

"userFlags" : 1,

"capped" : false,

"nindexes" : 39,

"totalIndexSize" : 397476240,

"indexSizes" : {

...

},

"ok" : 1

}

Extracto de información de la base de datos.

Page 55: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 55 -

3.2.4. Población y muestra

3.2.4.1. Población

La población analizada en este trabajo está constituida por 81.205 etiquetas de productos

consumidos en 161 Países. Así mismo, cada etiqueta describe un producto por medio de 159

campos de información. (Ver Anexos)

3.2.4.2. Muestra

Todos los productos de la base de datos fueron analizados, pero algunos de ellos fueron

excluidos durante el proceso de selección debido a que la información provista por sus

etiquetas estaba solo parcialmente completa. Al ser una base de datos abierta y colaborativa,

no toda la información de un producto está disponible. Por ello y en virtud de evitar fuertes

variaciones e inconsistencias en los indicadores, aquellos productos no fueron tenidos en

cuenta por el proceso de análisis de datos.

Por lo tanto, la muestra sobre la que están construidos los indicadores está conformada por

38.107 etiquetas de productos. A medida que la información faltante sobre los productos se

complete en la base de datos, la información suministrada por los indicadores resultara más

precisa.

3.3. Creación de indicadores

Para la construcción de indicadores se hizo uso de 3 tecnologías: MongoDB, Apache Spark y

Apache Zeppelin.

La integración de Apache Spark y Apache Zeppelin se realiza a través del archivo de

configuración zeppelin-env.sh de Apache Zeppelin. Mientras que la integración de Apache

Spark con Mongo DB se realiza a traves de la librería Spark-MongoDB.

Page 56: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 56 -

## config for integration with Apache Spark

export ZEPPELIN_MEM="-Xmx1024m"

export ZEPPELIN_JAVA_OPTS="-Dspark.home=/usr/spark"

## load the lib third-party for access to mongoDB

export SPARK_SUBMIT_OPTIONS="--packages com.stratio.datasource:spark-mongodb_2.10:0.9.2"

La metodología desarrollada para la creación de los indicadores se basó en tres etapas:

1. Carga de datos persistidos en MongoDB.

2. Transformación de datos a través de Apache Spark.

3. Visualización de datos con Apache Zeppelin.

3.3.1. Carga de datos

Los datos persistidos en la instancia local de MongoDB fueron cargados en el

contexto de Spark a través de la librería Spark-MongoDB desarrollada por Stratio.

Esta librería permite leer/escribir datos con Spark SQL desde/hacia colecciones de

MongoDB.

La versión de Spark-MongoDB utilizada en este trabajo es la versión 0.9.2, la cual

trabaja con Scala 2.10, Apache Spark 1.4.0, y MongoDB 3.0.x

Tabla 1 - Dependencias Spark-MongoDB

Spark-MongoDB Apache Spark MongoDB

0.8.2 – 0.9.2 1.4.0 3.0.x

Page 57: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 57 -

Una vez lograda la integración de Apache Spark con Apache Zeppelin, se procedió a

leer los datos de la instancia de MongoDB para que puedan ser procesados por Spark.

## load the lib third-party for access to mongoDB

z.load("com.stratio.datasource:spark-mongodb_2.10:0.9.2")

import org.apache.spark.sql.SQLContext._

import org.apache.spark.sql._

## load the data to a spark dataframe

val options = Map("host" -> "10.0.2.2:27017", "database" -> "openfoodfacts", "collection" -> "products")

val df = sqlContext.read.format("com.stratio.datasource.mongodb").options(options).load

Para ello, primeramente es necesario agregar la dependencia del conector Spark-

MongoDB al contexto de Apache Zeppelin. Apache Zeppelin crea y expone los

contextos de Spark, SQL y Zeppelin a través variables disponibles para ambientes

Python y Scala.

Tabla 2 - Contextos disponibles para ambientes Scala y Python

Contexto Variable

Spark Context sc

SQL Context sqlContext

Zeppelin Context Z

Los datos de la base de datos fueron cargados en un Dataframe de Spark. Un

Dataframe es una colección distribuida de datos organizados en columnas. Es

Page 58: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 58 -

conceptualmente equivalente a una tabla en una base de datos relacional. Los

Dataframe de Spark pueden ser construidos a partir de una amplia variedad de

fuentes, tales como: archivos de datos estructurados, tablas en Hive, bases de datos

externas, o RDD existentes.

El concepto de Dataframe en Spark está inspirado en los Dataframes introducidos por

lenguajes de scripting como R y Python (Pandas). Son la evolución de los RDDs

(Resilient Distributed Dataset) y tienen por objetivo:

Mantener todas las ventajas de cálculo paralelizable de los RDD.

Incluir funcionalidad que no tenían los RDD y si otros lenguajes como R o

Python Pandas.

Simplificar y potenciar el manejo de los datos.

Incluir de serie la posibilidad de usar SQL contra la información de los

Dataframes.

Mejorar las opciones de importación/exportación de los Dataframes.

Permitir la conversión bidireccional entre RDD y Dataframes.

Ilustración 22- Spark Dataframes (fuente: https://aspgems.com/blog/big-data/migrando-de-pandas-spark-

dataframes)

Page 59: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 59 -

El Dataframe con los datos cargados desde la base de datos está disponible a través

de la variable df y listo para poder ser analizado por Spark.

## output after load data from database

...

df: org.apache.spark.sql.DataFrame = [sortkey: bigint, completed_t: bigint, states: string, emb_codes_20141016: string, countries_tags: array<string>, labels_debug_tags: array<string>, fruits-vegetables-nuts_100g_estimate: string, status_tags: array<string>, fsa_score: string, last_modified_t: bigint, photographers: array<string>, ingredients_text: string, quantity: string, brands: string, origins: string, empty: bigint, traces: string, interface_version_modified: string, ingredients_debug: array<string>, checkers_tags: array<null>, emb_code: string, codes_tags: array<string>, editors_tags: array<string>, product_name: string, informers: array<string>, ingredients_that_may_be_from_palm_oil_n: bigint, editors: array<string>, labels_prev_hierarchy: array<string>, creator: string, code: st...

...

3.3.2. Transformación de datos

Una vez construido el Dataframe, es posible manipular los datos para dar

comienzo al análisis de datos. La manipulación de datos puede realizarse a través

de diversas operaciones sobre el Dataframe.

// Create the DataFrame

val df =

sqlContext.read.format("com.stratio.datasource.mongodb").options(options).load

// Show the content of the DataFrame

df.show()

Page 60: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 60 -

// Print the schema in a tree format

df.printSchema()

// Select only the "nutriments" column

df.select("nutriments").show()

// Select products with “quantity” greater than 100

df.filter(df("quantity") > 100).show()

// Count products by “countries”

df.groupBy("countries").count().show()

Dado que los datos en la base de datos no tienen una estructura fija (al contrario,

su estructura es más bien flexible), los productos no cuentan con la misma

información. Es por ello que fue necesario realizar una transformación y

selección de datos antes de poder construir los indicadores propuestos.

Los indicadores “Promedio de sal consumida por país”, Promedio de azúcar

consumido por país” y “Ranking de productos más grasos” necesitan conocer

donde los productos son consumidos para poder operar. Este dato se encuentra

representado en el atributo countries del documento JSON de cada producto. El

atributo countries contiene una lista separada por coma con todos los países

donde ese producto es consumido. Por lo tanto, es necesario realizar una

transformación para partir la información de un producto en varias partes,

representando cada parte la información de un producto consumido en un país

determinado y asi considerar cada parte en los indicadores. Por ejemplo:

products.take(10).foreach(println)

...

Product(Marks & Spencer Curiously Strong Mints,France,United Kingdom,96,0,,Groceries,14)

...

La información debe partirse en dos, para que la información sea tenida en

cuenta para ambos países: Francia y UK.

Page 61: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 61 -

productsTransfRDD.take(10).foreach(println)

...

Product(Marks & Spencer Curiously Strong Mints,France,96,0,,Groceries,14)

Product(Marks & Spencer Curiously Strong Mints,United Kingdom,96,0,,Groceries,14)

...

Esto transformación puede hacerse por medio de la operación flatMap sobre el

RDD de productos. Un RDD es dividido en múltiples particiones, las cuales

pueden ser procesadas en diferentes nodos dentro de un clúster de Spark y sobre este

se pueden realizar dos tipos de operaciones:

Transformaciones

Acciones

Las transformaciones dan como resultado un nuevo RDD, mientras que las acciones

son operaciones que dan como resultado un valor final hacia el programa controlador

o generan la instrucción de escritura al sistema externo de almacenamiento. Las

acciones fuerzan la evaluación de las transformaciones requeridas por el RDD. Spark

no ejecuta las transformaciones hasta que aparece una acción (Evaluación Lazy).

## examples of transformations on RDD: map, flatMap and filter

...

val productsTransfRDD = productsRDD.map(line => line.split("\t")).filter(s=>s(0)!="code").filter(_.size == 159).filter(s=>s(102)!="" & s(117)!="").flatMap(s => s(33).split(",").map(part => Product(s(7), part, s(102), s(117), s(99), s(60), s(158))))

...

## examples of actions on RDD: first, foreach, take(n), etc.

...

productsTransfRDD.take(10).foreach(println)

...

Page 62: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 62 -

La operación flatMap es parecida a la operación map pero produce elementos

múltiples a partir de cada elemento introducido. En nuestro ejemplo, el valor de la

columna countries (representado por s(33)) es particionado (s(33).split(",")) para

cada elemento del RDD de productos y por cada uno de estos valores (países) un

nuevo producto es creado. Esto dará como resultado un nuevo RDD que contendrá

un nuevo producto por cada país de la lista representada por la columna countries.

Por otro lado, las transformaciones filter nos permite excluir aquellos productos que

no contengan toda la información completa que necesitamos para el análisis de los

indicadores (filter(s=>s(102)!="" & s(117)!="")). En el ejemplo, los campos

s(102) y s(117) representan los atributos sugar100g y sodium100g respectivamente.

Con respecto al indicador “Distribución de productos menos saludables”, fue

necesario transformar el RDD de productos en nuevo RDD conteniendo el

continente donde es consumido un producto y no el país propiamente dicho.

productsTransfRDD.take(5).foreach(println)

Result(Luxury Christmas Pudding,United Kingdom,44,0.078740157480315,,Desserts,10)

Result(Luxury Christmas Pudding,United Kingdom,44,0.0787,,Sugary snacks,10)

Result(Pepsi, Nouveau goût !,France,10.4,0.01,,Beverages,2)

Result(7Up,France,10.4,0.0393700787401575,,Beverages,2)

Result(Sour Fruit Gummies,Germany,57.5,0.05,,Sugary snacks,14)

La información debe partirse transformarse reemplazando cada país por el

continente al que pertenece el mismo.

productsTransfRegionRDD.take(5).foreach(println)

Page 63: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 63 -

Result(Luxury Christmas Pudding,Europa,44,0.078740157480315,,Desserts,10)

Result(Luxury Christmas Pudding,Europa,44,0.0787,,Sugary snacks,10)

Result(Pepsi, Nouveau goût !,Europa,10.4,0.01,,Beverages,2)

Result(7Up,Europa,10.4,0.0393700787401575,,Beverages,2)

Result(Sour Fruit Gummies,Europa,57.5,0.05,,Sugary snacks,14)

Las transformaciones a realizar son similares a las utilizadas en el resto de los

indicadores pero con el agregado de reemplazar cada país por el continente al

que pertenece.

## Arrays of Regions

val regEuropa = Array("Luxembourg","Bulgaria","Denmark","Portugal","Deutschland","Serbia","Poland","Norway","Andorra","Netherlands","Belgium","Turkey","Ukraine","Other-turquie","Ireland","Slovenia","Albania","es:Europe","Scotland","Czech Republic","pt:Holanda","Sweden","Hungary","France","Russia","Germany","Spain","Lithuania","Romania","Finland","Austria","Switzerland","Greece","United Kingdom","Italy")

val regAsia = Array("Thailand","India","Other-japon","Qatar","Indonesia","China","Taiwan","Iraq","Hong Kong","Saudi Arabia","Israel","Lebanon","Singapore","Japan","Kuwait","United Arab Emirates","South Korea")

val regAfrica = Array("Egypto","Senegal","Algeria","South Africa","Tunisia","Morocco")

val regAmericaNorte = Array("Mexico","United States","Canada","Cuba")

val regAmericaSur = Array("Colombia","Chile","Brazil","Argentina","Aruba")

val regOceania = Array("New Zealand","Australia")

## build new RDD

val df = productsTransfRDD.toDF()

val data = df.map(row => {

val row1 = row.getAs[String](1)

val make = if (regEuropa contains row1) "Europa"

else if (regAsia contains row1) "Asia"

else if (regAfrica contains row1) "Africa"

else if (regAmericaNorte contains row1) "AmericaNorte"

Page 64: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 64 -

else if (regAmericaSur contains row1) "AmericaSur"

else if (regOceania contains row1) "Oceania"

else "Other"

Result(row.getAs[String](0),make,row.getAs[String](2),row.getAs[String](3),row.getAs[String](4),row.getAs[String](5),row.getAs[Integer](6))

})

Esta transformación se apoya en un conjunto de Arrays que contienen los países

pertenecientes a cada continente o región (regAmericaSur, regAmericaNorte,

etc.). Mediante la función map, por cada elemento del RDD se obtiene el pais

(row.getAs[String](1)) y se reemplaza por el continente al que pertenece ese pais

apoyándose en los Arrays definidos previamente. El resultado de esta

transformación es un nuevo RDD (data) conteniendo la información de productos

clasificada por Continente.

Una vez transformados los datos, los mismos son registrados mediante tablas temporales (en

memoria) y disponibles para ser consultados a traves de SQL Spark.

## on paragraph indicators 3.1.1, 3.1.2 and 3.1.3

...

products.toDF().registerTempTable("products")

## on paragraph indicators 3.1.1, 3.1.2 and 3.1.3

...

data.toDF().registerTempTable("result")

3.3.3. Visualización de datos

En esta tercer y última etapa el resultado del análisis de datos de cada indicador

Page 65: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 65 -

fue representado por medio de diferentes graficas con el objetivo de simplificar

el análisis de los mismos.

Estas graficas pueden ser construidas sobre Apache Zeppelin a través del

intérprete Spark SQL, el cual permite acceder al contexto de Spark por medio del

lenguaje SQL y así consultar la información procesada por este. Este trabajo está

enfocado en el uso de las visualizaciones built-in provistas por Zeppelin, pero

otras visualizaciones también pueden lograrse por medio de otros intérpretes.

Zeppelin ofrece distintas maneras de visualizar una misma información

consultada a través del intérprete SQL:

Por medio de tablas

Por medio grafico de barras

Por medio grafico de barras agrupadas

Por medio grafico de barras seccionadas

Por medio grafico de líneas

Por medio grafico circular

Etc.

Estas visualizaciones son dinámicas, permitiendo visualizar la misma

información desde diferentes perspectivas o enfoques.

Page 66: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 66 -

Ilustración 23 - Visualización por medio de tabla

Ilustración 24 - Visualización por medio de grafico de barras agrupadas

Ilustración 25 - Visualización por medio de grafico de dispersión

3.3.3.1. Promedio de sal consumida por país

El consumo de sal en un país, depende en gran parte de la proporción de sodio

que aporta cada uno de los alimentos que el sistema alimentario distribuye en ese

Page 67: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 67 -

país. Así, si las cadenas de distribución de alimentos ponen a disposición de la

población, alimentos con alto contenido de sal, la probabilidad de que la

población consuma este tipo de alimentos es mayor, como así también el riesgo

de padecer enfermedades como la hipertensión.

Ilustración 26 - Consulta sobre Spark SQL: Promedio de sal por país

A través del intérprete Spark SQL, es posible ejecutar una consulta sobre la tabla

products y conocer para cada país, cuanta sal en promedio aportan los productos

que están expuestos a ser consumidos por su población.

La tabla products reside en memoria y fue creada durante el proceso de

transformación de datos.

// create a temporal table on the SparkContext with the info processed

...

products.toDF().registerTempTable("products")

...

Esta tabla contiene un conjunto reducido y transformado de la información de los

productos contenida en la base de datos. Cada registro de la tabla se representa

por medio de la clase Product.

// Structure for represent data of a product after that it was analyzed

case class Product(

product:String,

countriesSold:String,

sugar100g:String,

sodium100g:String,

transFat:String,

category:String,

Page 68: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 68 -

nutritionScore:String

)

Para este indicador, de cada Producto nos interesa conocer:

countriesSold: El país donde el producto es vendido

sodium100g: La cantidad de sal que el producto aporta cada 100g de

alimento.

Para el análisis de la información se optó por una visualización en forma de grafico de

barras, pero es posible de manera interactiva optar dinámicamente por otros tipos de

visualización de acuerdo al enfoque que se quiera dar a los datos.

Ilustración 27 - Indicador: Consumo de sal promedio por país (vista grafico barras)

3.3.3.2. Promedio de azúcar consumida por país

Del mismo modo que el consumo de sal en un país, depende en gran parte de la

proporción de sodio que los alimentos expuestos al público aportan, el consumo de

azúcar de un país se puede determinar por la cantidad de azúcar que aportan aquellos

productos que son ofrecidos a su población. Explorar esta información nos permite

Page 69: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 69 -

conocer que regiones están expuestas a mayores riesgos respecto de enfermedades

crónicas como la diabetes.

Ilustración 288 - Consulta sobre Spark SQL: Promedio de azúcar por país

Del mismo modo que el indicador anterior, se apoya en los datos procesados y

reducidos obtenidos del proceso de transformación, y registrados en la tabla

temporal products, para conocer cuanta azúcar en promedio aportan los

productos que están expuestos a ser consumidos por cada país.

De cada Producto nos interesa conocer:

countriesSold: El país donde el producto es vendido

sugar100g: La cantidad de azúcar que el producto aporta cada 100g de

alimento.

// Structure for represent data of a product after that it was analyzed

case class Product(

product:String,

countriesSold:String,

sugar100g:String,

sodium100g:String,

transFat:String,

category:String,

nutritionScore:String

)

Para el análisis de la información se optó por una visualización en forma de grafico de

Page 70: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 70 -

barras, pero es posible de manera interactiva optar dinámicamente por otros tipos de

visualización de acuerdo al enfoque que se quiera dar a los datos.

Ilustración 29 - Indicador: Consumo de azúcar promedio por país (vista grafico barras)

3.3.3.3. Ranking de productos más grasos

De todas las grasas, la grasa trans es la peor para su salud. Consumir demasiada

grasa trans en la alimentación incrementa el riesgo de padecer enfermedades

cardiovasculares, muerte súbita de origen cardiaco y diabetes. Las grasas trans se

presentan cuando los fabricantes de alimentos convierten aceites líquidos en

grasas sólidas con propósitos de conservación, estabilidad y reducción de costos

en la elaboración de los productos.

Por medio de este indicador podemos explorar los datos en busca de aquellas

categorías de alimentos que contengan mayor proporción de grasas trans con el

objetivo de excluirlos o reemplazarlos de nuestra dieta.

Page 71: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 71 -

Ilustración 30 - Consulta sobre Spark SQL: Ranking de productos más grasos

Trabaja sobre la misma estructura de datos que los anteriores indicadores y de la

cual nos interesa conocer:

category: La categoría principal a la que corresponde el producto.

Ejemplo: Mermeladas.

transFat: El país donde el producto es vendido

// Structure for represent data of a product after that it was analyzed

case class Product(

product:String,

countriesSold:String,

sugar100g:String,

sodium100g:String,

transFat:String,

category:String,

nutritionScore:String

)

Para el análisis de la información se optó por una visualización en forma de grafico

circular, pero es posible de manera interactiva optar dinámicamente por otros tipos de

visualización de acuerdo al enfoque que se quiera dar a los datos.

Ilustración 311 – Proporción de grasas trans en los 7 productos más grasos

Page 72: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 72 -

El ranking construido define 7 categorías de producto, pero este número puede ser

variable y puede configurarse dinámicamente para que construir ranking 5, ranking 10,

ranking n, siendo ‘n’ el número de categorías que interese estudiar.

Ilustración 322 - Parámetro de formulario para ranking ‘n’

3.3.3.4. Distribución de productos menos saludables

Por medio de este indicador podemos conocer acerca de la distribución de alimentos en

cada región en base a su puntuación nutricional. Trabaja sobre el concepto de nutrition

score definido por la por la Agencia de Normas Alimentarias del Reino Unido (FSA).

Cada producto tiene una puntuación nutricional que va desde los -14 para los alimentos

más saludables hasta +40 para los alimentos menos saludables. El objetivo de este

indicador es conocer para cada región si su alimentación está basada en alimentos

saludables o alimentos poco saludables.

Ilustración 33 - Consulta sobre Spark SQL: Distribución de alimentos más y menos saludables por

continente

Trabaja sobre la tabla temporal result la cual reside en memoria y que fue creada durante

el proceso de transformación de datos.

// create a temporal table on the SparkContext with the info processed

...

data.toDF().registerTempTable("result")

...

Page 73: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 73 -

Esta tabla contiene un conjunto reducido y transformado de la información de los

productos contenida en la base de datos. Cada registro de la tabla se representa

por medio de la clase Result.

// Structure for represent data of a product after that it was analyzed

case class Result(

product:String,

countriesSold:String,

sugar100g:String,

sodium100g:String,

transFat:String,

category:String,

nutritionScore:Integer

)

Para la construcción de este indicador, nos interesa conocer:

countriesSold: Representa el continente donde el producto es ofrecido

nutritionScore: El puntaje nutricional definido por UK FSA

cantProductos (calculado con funciones de agregación): Representa la

cantidad de productos para un puntaje nutricional y continente dados.

averageProd: (calculado con funciones windows de Spark): Indica que

porcentaje del total representa la cantidad de productos definida por

cantProductos.

Las funciones windows permiten a los usuarios de Spark SQL ejecutar funciones

de agregación tales como promedios, rankings, etc. sobre un rango de filas y no

sobre todo el conjunto.

Page 74: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 74 -

Ilustración 34 - Indicador: Distribución de alimentos más y menos saludables por continente (tabla)

Para el análisis de la información se optó por una visualización en forma de grafico de

dispersión, pero es posible de manera interactiva optar dinámicamente por otros tipos de

visualización de acuerdo al enfoque que se quiera dar a los datos.

Ilustración 35 – Indicador: Distribución de alimentos más y menos saludables por continente (grafico

dispersión)

Page 75: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 75 -

4. RESULTADOS Y EVALUACION DE LA PROPUESTA

4.1. Resultados obtenidos

De acuerdo a los resultados suministrados por los indicadores, podemos concluir que que

el país con mayor consumo de sal es Tailandia con 2.6g cada 100g, seguido por Brasil

con 1.87g cada 100g y Singapur con 1.72g cada 100g.

Así mismo, podemos conocer que de los primeros diez países con mayor consumo de sal,

cinco de ellos corresponden al continente asiático: Tailandia, Singapur, China, Indonesia

y Corea del Sur.

Ilustración 36 - Indicador: Consumo de sal promedio por país (vista tabla)

Del conocimiento revelado, también podemos conocer que el país con mayor consumo

de azúcar es Japón con 54.6g cada 100g, seguido por Qatar con 53.4g cada 100g y

Arabia Saudita con 53.3g cada 100g.

Así mismo, podemos ver que dentro de los primeros diez países con menor consumo de

azúcar, cinco de ellos son islas o forman parte de regiones insulares: Taiwán, Singapur,

Escocia, Cuba y Malta.

Page 76: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 76 -

Ilustración 337 - Indicador: Consumo de azúcar promedio por país (vista tabla)

Con respecto al indicador de productos más grasos, este permitió descubrir que los 7

alimentos con mayor porcentaje de grasas transgénicas en su composición son:

1. Chocolate con leche

2. Snacks

3. Mantecas

4. Margarinas

5. Pasteles

6. Snacks dulce

7. Pasteles de carne

Page 77: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 77 -

Ilustración 348 - Ranking de los 7 productos más grasos

El análisis del indicador que permite conocer en qué proporción de alimentos saludables

y no saludables se basa la dieta de cada continente, arrojo que el continente con una

mayor proporción de alimentos poco saludables en su dieta es África.

Así mismo Asia y América del Sur también basan su dieta en alimentos pocos saludables

pero en una menor proporción.

Con respecto a Europa, Oceanía y América del norte, parece haber un equilibrio entre el

consumo de alimentos saludables y el consumo de alimentos poco saludables .

Tabla 3 - Distribución de alimentos más y menos saludables

Región Porcentaje alimentos

más saludables

Porcentaje alimentos

menos saludables

Diferencia

África 23.08 % 54.74 % -0.31

Asia 16.21 % 36.48 % -0.2

Europa 27.8 % 29.03 % -0.01

Oceanía 23.51 % 28.59 % -0.05

América del norte 25.45 % 33 % -0.07

Page 78: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 78 -

América del sur 16.21 % 32.43 % -0.16

4.2. Evaluación de la propuesta

El trabajo propuesto fue evaluado por un grupo de profesionales de la salud, pero la

evaluación también fue abierta a toda la comunidad a través de una encuesta web creada para

al fin.

Se recolectaron 12 respuestas, de las cuales:

7 respuestas correspondieron a profesionales y estudiantes de ciencias de la salud

(médicos, nutricionistas, técnicos en alimentos, entre otros)

5 respuestas correspondieron a profesionales de tecnologías de la información

Las personas elegidas para esta evaluación fueron elegidas por sus perfiles y experiencias

tanto en el ámbito de la salud como en el ámbito de la información.

El punto de contacto con los profesionales de la salud fue la Lic. Claudia Escande, graduada

de la Universidad de Buenos Aires y que actualmente se desempeña como nutricionista de la

Fundación Argentina de Fibromialgia, brindando asesoramiento nutricional a los pacientes.

Ella fue elegida por su interés por el trabajo y por el papel profesional que cumple hoy día en

la Fundación. Florencia fue la primera persona en el evaluar el trabajo haciendo extensiva la

invitación a participar, a los colegas que trabajan con ella en la Fundación.

También participaron de la evaluación un grupo de profesionales de Tecnologías de la

Información quienes cuentan con experiencia en el desarrollo de aplicaciones en el ámbito de

la salud. Su aporte en la evaluación se consideró importante porque permite conocer los

aspectos más importantes a tener en cuenta al momento de desarrollar un sistema en este

ámbito, como ser las fases de desarrollo, las normas y certificaciones, el papel de los

profesionales de la salud en el desarrollo, etc.

Page 79: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 79 -

Ilustración 35 - Encuesta participantes

Ilustración 36 - Encuesta participantes roles

Page 80: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 80 -

A continuación se expone la retroalimentación obtenida de la evaluación:

Ilustración 37 - Encuesta pregunta 1

Todos los participantes coinciden que en que los indicadores presentados en el trabajo pueden

aportar conocimiento, un resultado positivo.

Ilustración 38 - Encuesta pregunta 2

Con respecto a esta devolución, todos los participantes coinciden en que construir indicadores

a partir de la información nutricional de los alimentos es posible, pero que deben tomarse en

cuenta otros factores. En este sentido, sería bueno trabajar con los profesionales de la salud

Page 81: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 81 -

para conocer cuáles son esos factores y reformular los indicadores para obtener una

información más fiel.

Ilustración 39 - Encuesta pregunta 3

El resultado de esta pregunta está repartido casi equitativamente. Lo bueno es que

aproximadamente el 70% de las personas considera que la información faltante puede ser

obtenida de las etiquetas de los productos.

Ilustración 40 - Encuesta pregunta 4

Page 82: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 82 -

Más de la mitad de los participantes considera útil el conocimiento aportado por los

indicadores presentados. Sin embargo parece ser necesario trabajar en la construcción de otro

tipo de indicadores que aporten diferentes conocimientos y desde diferentes perspectivas.

Ilustración 41 - Encuesta pregunta 5

Todos los participantes están de acuerdo que el trabajo plantea una nueva forma de obtener

conocimiento, más rápida y más accesible que las actuales.

Ilustración 42 - Encuesta pregunta 6

Page 83: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 83 -

Casi el 100% de los participantes cree que este trabajo contribuye a un sistema nutricional

más abierto y transparente, lo cual es bueno ya que es uno de los objetivos que persigue este

trabajo.

Ilustración 43 - Encuesta pregunta 7

La gran mayoría de los evaluadores parece estar de acuerdo en que el público general resulta

más beneficiado con este trabajo, seguido de los organismos y profesionales de la salud. Otro

de los beneficios que persigue este trabajo parece estar bien encaminado.

Ilustración 44 - Encuesta pregunta 8

Page 84: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 84 -

La retroalimentación proporcionada por los evaluadores en líneas generales fue buena. Si

bien muchos de ellos coinciden en que el trabajo resulta beneficioso para los diferentes

actores del sector alimentario, es necesario seguir trabajando en la elaboración de nuevos

indicadores que permitan descubrir un conocimiento más rico en el ámbito de la salud y la

nutrición. En este sentido, será importante trabajar en conjunto con los profesionales de la

salud quienes juegan un rol importante en la definición de indicadores nutricionales más

fiables y usables.

Una copia de la encuesta puede ser encontrada en el siguiente enlace:

https://docs.google.com/forms/d/1ErqkpCqOpNff2M1MFlk4obDZd9IR1z1Jp6h4n0p7SB0/vi

ewform

Page 85: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 85 -

5. CONCLUSIONES Y LÍNEAS FUTURAS

Los resultados de este trabajo, han permitido conocer desde una óptica abierta y transparente,

países y regiones caracterizados por dietas poco saludables, ricas en grasas, sal y azúcares,

elementos que junto con la vida sedentaria, son las principales causas de enfermedades, como

la obesidad, las patologías cardio y cerebro vasculares, la diabetes tipo 2, y varios tipos de

cáncer, todas ellas responsables del casi sesenta por ciento de muertes anuales en todo el

mundo. (Nacion, 2003)

Gracias a la información aportada por los indicadores presentados en este trabajo, podemos

conocer que la ingesta media de sal en los países del continente asiático, es mayor si la

comparamos con la de los países de otros continentes. Estos valores están en concordancia

con lo publicado en un informe de la OMS, presentado en un congreso celebrado en Paris, en

Octubre de 2006 (OMS, Reduccion del consumo de sal en la poblacion, 2006)

El primer informe acerca del consumo de sal por país, se hizo público en 2013, tras un trabajo

elaborado por la Escuela de Salud Pública del Departamento de Epidemiología de la

Universidad de Harvard (Serrano, 2013), en el cual se analizaron diversas fuentes de datos e

indicadores y sobre el cual se trabajó varios meses.

Gracias a la plataforma presentada en esta propuesta es posible descubrir el mismo

conocimiento más rápidamente, al mismo tiempo que otorga un mayor grado de accesibilidad

a la información, permitiendo a todos los interesados (ciudadanos, profesionales de la salud,

organizaciones, gobiernos, etc.) contar con información estadística de nutrición de libre

acceso y actualizada constantemente.

El aporte de los indicadores construidos sobre esta plataforma, también permitió descubrir

que las dietas menos saludables del mundo corresponden a las regiones de África y Asia. En

2015, la revista The Lancet Global Health, público un informe en el que analizaba lo que la

gente comía entre 1990 y 2010. Según este informe los países pobres en el África

subsahariana y Asia estaban experimentando un aumento dramático en el consumo de

Page 86: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 86 -

alimentos poco saludables, mientras que la situación mejoraba levemente en Europa

Occidental y América del Norte.

En este sentido, el trabajo propuesto permite confirmar que un año después de aquel primer

estudio, la alimentación poco saludable en África ya es un hecho, y suma un gran aporte para

que los organismos, gobiernos y ciudadanos de estos países trabajen en forma conjunta en la

elaboración de políticas que permitan revertir esta realidad.

Los indicadores presentados en este trabajo, son solo un ejemplo del conocimiento que se

puede descubrir a través de la plataforma, y son la puerta de entrada a un conocimiento más

abierto y transparente en el campo de la alimentación y la salud. Ellos fueron construidos en

torno a tres de las claves que propone la OMS para llevar una alimentación sana: limitar el

consumo de sal, azúcar y grasas.

Los investigadores pueden continuar o extender este trabajo, a través de la creación de

nuevos indicadores, o través de la reformulación de los hasta aquí presentados. La plataforma

ofrece a los investigadores, la posibilidad de definir y construir nuevos indicadores que les

permita descubrir conocimiento (patrones, hábitos, relaciones, etc.) acerca de la manera en

que las personas se alimentan, desde una perspectiva basada en la información nutricional de

los alimentos que el sistema alimentario pone a disposición de las personas.

Con respecto a las líneas de trabajo futuras, puede ser interesante componer la información

nutricional de los productos con otras bases de datos abiertas, como por ejemplo las ofrecidas

por el banco mundial. Gracias a esta integración de datos, sería posible construir indicadores

más ricos, que permitan conocer de qué manera influye la alimentación de una persona en su

esperanza de vida, o descubrir diferencias entre la alimentación de países desarrollados y

países en vías de desarrollo, etc.

Otra posible e interesante línea de trabajo consiste en la parametrización de los indicadores,

para permitir una mayor personalización de la información que se desee conocer, y que

permita a un investigador utilizar un mismo indicador para descubrir diferentes

conocimientos. Un ejemplo de implementación podría ser a través del concepto de Dynamic

Form ofrecido por Apache Zeppelin.

Page 87: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 87 -

La información proporcionada por los indicadores estudiados, también revela que gran parte

de los países que presentan un menor consumo de azúcar, corresponden a regiones insulares o

son islas propiamente dicho. Sería interesante investigar si existe alguna relación que

justifique este descubrimiento o es mera casualidad.

El trabajo hasta aquí presentado, contribuye a impulsar un sistema alimentario más abierto y

transparente, poniendo a disposición de toda la sociedad la información nutricional de cada

uno de los alimentos entregados por el sistema alimentario, permitiendo la evaluación y

control por parte de los ciudadanos, así como la participación en la elaboración de políticas

que aseguren una alimentación más saludable y una mejor calidad de vida.

Page 88: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 88 -

6. REFERENCIAS BIBLIOGRÁFICAS Y RECURSOS ELECTRÓNICOS

Alok. (19 de May de 2015). mongodb. Recuperado el 25 de April de 2016, de girikon.com:

http://www.girikon.com/blog/mongodb/

Apache. (s.f.). Spark. Recuperado el 21 de April de 2016, de http://spark.apache.org/

Apache. (s.f.). Zeppelin. Recuperado el 21 de April de 2016, de

http://zeppelin.incubator.apache.org/

Apache Zeppelin Walk Through with Hortonworks. (s.f.). Recuperado el 25 de April de 2016,

de nedsblog.com: https://nedsblog.com/2015/10/27/apache-zeppelin-walk-through-

with-hortonworks/

Bank, W. (s.f.). Health, Nutrition and Population Data and Statistics. Recuperado el 19 de

April de 2016, de datatopics.worldbank.org: http://datatopics.worldbank.org/hnp/

Bastión, R. (29 de May de 2014). Las tres V para triunfar en el 'big data': Volumen,

Velocidad y Variación. Recuperado el 09 de April de 2016, de elmundo.es:

http://www.elmundo.es/economia/2014/05/29/53860ac0e2704e361f8b4583.html

BBVAOpen4U. (s.f.). Apache Spark: las ventajas de usar al nuevo ‘rey’ de Big Data.

Recuperado el 25 de April de 2016, de bbvaopen4u.com:

http://www.bbvaopen4u.com/es/actualidad/apache-spark-las-ventajas-de-usar-al-

nuevo-rey-de-big-data

Bordonada, M. Á. (2013). LA ALIMENTACIÓN Y EL CONSUMIDOR. Recuperado el 17 de

May de 2016, de gesdoc.isciii.es:

http://gesdoc.isciii.es/gesdoccontroller?action=download&id=06/11/2013-

9d151ea05e

Briega, R. E. (22 de August de 2014). Ipython y Spark para el analisis de datos. Recuperado

el 25 de April de 2016, de relopezbriega.github.io:

http://relopezbriega.github.io/blog/2014/08/22/ipython-y-spark-para-el-analisis-de-

datos/

Canal, P. N. (s.f.). IBM Watson. Recuperado el 19 de April de 2016, de www-03.ibm.com:

https://www-03.ibm.com/press/es/es/presskit/45119.wss

DOAN, D. H. (s.f.). Apache Zeppelin, the missing component for your BigData ecosystem.

Recuperado el 25 de April de 2016, de docplayer.net: http://docplayer.net/5931419-

Apache-zeppelin-the-missing-component-for-your-bigdata-ecosystem.html

Escribano, A. (s.f.). Por que es tan importante la nutricion para la salud. Obtenido de Efe

Salud: http://www.efesalud.com/noticias/por-que-es-tan-importante-la-nutricion-para-

la-salud/

Esteso, M. P. (s.f.). Apache Spark: qué es y cómo funciona. Recuperado el 25 de April de

2016, de geekytheory.com: https://geekytheory.com/apache-spark-que-es-y-como-

funciona/

EWG-foodScores. (s.f.). methodology-nutrition. Recuperado el 17 de May de 2016, de

ewg.org: http://www.ewg.org/foodscores/content/methodology-nutrition

FAO. (s.f.). Nutrición. Recuperado el 19 de April de 2016, de fao.org:

http://www.fao.org/nutrition/es/

Fernández, R. (05 de December de 2013). Tutorial MongoDB. Alta disponibilidad con

réplicas. Recuperado el 25 de April de 2016, de charlascylon.com:

http://charlascylon.com/2013-12-05-tutorial-mongodb-alta-disponibilidad-replicas

Page 89: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 89 -

Food_Standards_Agency_cd23. (s.f.). Recuperado el 17 de May de 2016, de intercuba.net:

https://intercuba.net/wiki/articles/f/o/o/Food_Standards_Agency_cd23.html

Gamboa, A. H. (s.f.). Introduccion a apache spark batch y streaming. Recuperado el 25 de

April de 2016, de adictosaltrabajo:

http://www.adictosaltrabajo.com/tutoriales/introduccion-a-apache-spark-batch-y-

streaming/

Gartner. (02 de July de 2014). Big Data - Open Data: Motor de crecimiento riqueza.

Recuperado el 09 de April de 2016, de datos.gob.es: http://datos.gob.es/content/big-

data-open-data-motor-de-crecimiento-riqueza

Gowtham. (s.f.). Apache Zeppelin: Quick start with Apache Spark. Recuperado el 25 de April

de 2016, de http://datadotz.com/: http://datadotz.com/apache-zeppelinquick-start-

with-apache-spark/

Hamm, S. (10 de December de 2015). Accelerating the nutrition revolution with cognitive

computing. Recuperado el 09 de April de 2016, de ibm.com:

http://www.ibm.com/blogs/think/2015/12/10/accelerating-the-nutrition-revolution-

with-cognitive-computing/

handbook, T. o. (2012). The Open Data Foundation. Obtenido de odaf.org:

http://www.odaf.org/

Hueda, M. C. (10 de March de 2016). Nuevos alimentos. Recuperado el 09 de April de 2016,

de blogs.tecnalia.com: http://blogs.tecnalia.com/inspiring-blog/2016/03/10/nuevos-

alimentos/

IBM. (31 de March de 2016). IBM Plans First Watson Health European Center of Excellence

in Italy. Recuperado el 09 de April de 2016, de prnewswire.com:

http://www.prnewswire.com/news-releases/ibm-plans-first-watson-health-european-

center-of-excellence-in-italy-300244129.html

Institute, O. D. (28 de May de 2015). How can we improve agriculture, food and nutrition

with open data? Recuperado el 19 de April de 2016, de godan.info:

http://www.godan.info/sites/default/files/old/2015/04/ODI-GODAN-paper-27-05-

20152.pdf

Janssen, S. (s.f.). Big Data. Recuperado el 19 de April de 2016, de wageningenur.nl:

https://www.wageningenur.nl/en/Dossiers/file/big-data-1.htm

Jellema, A., Meijninger, W., & Addison, C. (February de 2015). Open Data and Smallholder

Food and Nutritional Security. Recuperado el 09 de April de 2016, de cta.int:

http://www.cta.int/images/Opendataforsmallholders-report_.pdf

Katherine, Z. (s.f.). 10 efectos de las comidas procesadas. Obtenido de

bienestar.salud180.com: http://bienestar.salud180.com/salud-dia-dia/10-efectos-de-

las-comidas-procesadas

Kohlleffel, K. (08 de February de 2016). THREE OPEN SOURCE SOFTWARE PROJECTS

TRANSFORMING OIL & GAS COMPANIES. Recuperado el 25 de April de 2016, de

http://hortonworks.com/: http://hortonworks.com/blog/three-open-source-software-

projects-transforming-oil-gas-companies/

Laney, D. (02 de July de 2014). Big Data open data motor de crecimiento riqueza.

Recuperado el 09 de April de 2016, de datos.gob.es: http://datos.gob.es/content/big-

data-open-data-motor-de-crecimiento-riqueza

Mhurchu, C. N. (31 de October de 2013). Big Data solutions: big food obesity and poor diets.

Recuperado el 09 de April de 2016, de nihi.auckland.ac.nz:

Page 90: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 90 -

http://www.nihi.auckland.ac.nz/page/big-data-healthcare/blog-reviews/big-data-

solutions-big-food-obesity-and-poor-diets

Mhurchu, C. N. (2013). Big Food, Obesity & Poor Diets: Big Data Solutions. NIHI

symposium on Big Data in Healthcare (pág. 24). Auckland: NIHI.

Mhurchu, C. N. (s.f.). Big Food, Obesity & Poor Diets: Big Data Solutions. Recuperado el 04

de April de 2016, de nihi.auckland.ac.nz:

http://www.nihi.auckland.ac.nz/sites/nihi.auckland.ac.nz/files/pdf/informatics/bigdata/

Big%20Food%20Big%20Data%20-%20Cliona%20Ni%20Mhurchu.pdf

MongoDB. (s.f.). introduction. Recuperado el 25 de April de 2016, de mongodb.org:

https://docs.mongodb.org/manual/introduction/

Morros, R. S. (November de 2013). Big Data: Análisis de herramientas y soluciones.

Recuperado el 26 de April de 2016, de upcommons.upc.edu:

https://upcommons.upc.edu/bitstream/handle/2099.1/19855/90807.pdf?sequence=1&i

sAllowed=y

Nacion, L. (07 de December de 2003). Guerra de la OMS contra la sal, las grasas y el

azúcar. Recuperado el 05 de June de 2016, de lanacion.com.ar:

http://www.lanacion.com.ar/552467-guerra-de-la-oms-contra-la-sal-las-grasas-y-el-

azucar

Newman, D. (02 de July de 2014). Big Data open data motor de crecimiento riqueza.

Recuperado el 09 de April de 2016, de datos.gob.es: http://datos.gob.es/content/big-

data-open-data-motor-de-crecimiento-riqueza

nihi. (s.f.). NUTRITRACK: REFORMULATION OF PROCESSED FOODS TO PROMOTE

HEALTH. Recuperado el 19 de April de 2016, de nihi.auckland.ac.nz:

https://nihi.auckland.ac.nz/page/current-research/our-nutrition-and-physical-activity-

research/nutritrack-reformulation-processe

OMS. (7 de October de 2006). Reduccion del consumo de sal en la poblacion. Recuperado el

05 de June de 2016, de who.int: http://www.who.int/dietphysicalactivity/salt-report-

SP.pdf

OMS. (September de 2015). Alimentacion Sana. Recuperado el 18 de May de 2016, de

who.int: http://www.who.int/mediacentre/factsheets/fs394/es/

opendatahandbook. (2014). Why open data? Obtenido de opendatahandbook.org:

http://opendatahandbook.org/guide/es/why-open-data/

Penchikala, S. (s.f.). Apache Spark Introduction. Recuperado el 25 de April de 2016, de

infoq.com: http://www.infoq.com/articles/apache-spark-introduction

Porter, D. (03 de March de 2003). Recuperado el 05 de June de 2016, de who.int:

http://www.who.int/mediacentre/news/releases/2003/pr20/es/

Porter, S. (26 de March de 2015). SOS - Alimentos procesados un riesgo mas para la salud.

Recuperado el 09 de April de 2016, de http://www.losandes.com.ar/article/sos-

alimentos-procesados-un-riesgo-mas-para-la-salud-839663

rubenfa. (03 de Febraury de 2014). MongoDB: qué es, cómo funciona y cuándo podemos

usarlo (o no). Recuperado el 25 de April de 2016, de genbetadev.com:

http://www.genbetadev.com/bases-de-datos/mongodb-que-es-como-funciona-y-

cuando-podemos-usarlo-o-no

Sabato, G. (14 de May de 2014). G8 and FAO open agriculture projects set to join forces.

Recuperado el 09 de April de 2016, de scidev.net:

http://www.scidev.net/global/agriculture/news/g8-and-fao-open-agriculture-projects-

set-to-join-forces.html

Page 91: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 91 -

Schmidhuber, J. (14 de May de 2014). G8 and FAO open agriculture projects set to join

forces. Recuperado el 09 de April de 2016, de

http://www.scidev.net/global/agriculture/news/g8-and-fao-open-agriculture-projects-

set-to-join-forces.html

Serrano, L. (22 de March de 2013). Revelan cuánto es el consumo de sal a nivel mundial.

Recuperado el 05 de June de 2016, de laprensagrafica.com:

http://www.laprensagrafica.com/Revelan-cuanto-es-el-consumo-de-sal-a-nivel-

mundial

SINTESIS: An example of food ontology-for-diabetes-control.pdf. (s.f.). Obtenido de

phd.jabenitez.com: http://phd.jabenitez.com/wp-content/uploads/2014/02/2014.02.23-

SINTESIS-An-example-of-food-ontology-for-diabetes-control.pdf

Spoonacular. (s.f.). spoonacular. Recuperado el 19 de April de 2016, de food-api:

https://spoonacular.com/food-api

Sriharsha, R. (02 de June de 2015). INTRODUCTION TO DATA SCIENCE WITH APACHE

SPARK. Recuperado el 25 de April de 2016, de http://hortonworks.com/:

http://hortonworks.com/blog/introduction-to-data-science-with-apache-spark/

Team, D. (s.f.). Apache Zeppelin: A Quick start with Apache Spark. Recuperado el 25 de

April de 2016, de http://chennaihug.org/:

http://chennaihug.org/knowledgebase/apache-zeppelin-quick-start-with-apache-spark/

Thusoo, A. (s.f.). Big Data Revolutionizing food industry. Recuperado el 19 de April de 2016,

de wired.com: http://www.wired.com/insights/2014/02/big-data-revolutionizing-food-

industry/

Torralba, J. A. (2014). Integracion de Base de Datos. Madrid: CEF.

Ubero, J. (s.f.). Spark, ¿nuevo referente en Big Data? Recuperado el 25 de April de 2016, de

blog.soydata.net: http://blog.soydata.net/entradas/spark-nuevo-referente-en-big-data/

USDA. (s.f.). NDB API. Recuperado el 19 de April de 2016, de ndb.nal.usda.gov:

https://ndb.nal.usda.gov/ndb/doc/index

Villalpando, D. S. (2012). Use and understanding of the nutrition information panel of pre-

packaged foods in a sample of Mexican consumers. Cuernavaca, Morelos México:

Instituto Nacional de Salud Pública.

WIESEL, J. (17 de September de 2013). MongoDB desde Cero: Introducción e Instalación.

Recuperado el 25 de April de 2016, de codehero.co: http://codehero.co/mongodb-

desde-cero-introduccion-e-instalacion/

WIESEL, J. (10 de December de 2013). MongoDB desde Cero: Replicación - Parte I.

Recuperado el 25 de April de 2016, de codehero.co: http://codehero.co/mongodb-

desde-cero-replicacion-parte-i/

WIESEL, J. (14 de Janury de 2014). MongoDB desde Cero: Fragmentación - Parte I.

Recuperado el 25 de April de 2016, de codehero.co: http://codehero.co/mongodb-

desde-cero-fragmentacion-parte-i/

Wikipedia. (30 de November de 2015). Watson (inteligencia artificial). Recuperado el 19 de

04 de 2016, de es.wikipedia.org:

https://es.wikipedia.org/wiki/Watson_(inteligencia_artificial)

Wikipedia. (s.f.). Apache Spark. Recuperado el 25 de April de 2016, de wikipedia.org:

https://en.wikipedia.org/wiki/Apache_Spark

Wikipedia. (s.f.). MongoDB. Recuperado el 25 de April de 2016, de wikipedia.org:

https://es.wikipedia.org/wiki/MongoDB

Page 92: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 92 -

7. ANEXOS

7.1. Ejemplo de un producto en formato JSON

{

"_id" : "25040371",

"last_edit_dates_tags" : [

"2014-07-27",

"2014-07",

"2014",

"2015-07-11",

"2015-07",

"2015",

"2015-07-11",

"2015-07",

"2015",

"2015-07-11",

"2015-07",

"2015",

"2015-07-11",

"2015-07",

"2015",

"2015-07-11",

"2015-07",

"2015",

"2015-07-11",

"2015-07",

"2015",

"2015-07-11",

"2015-07",

"2015",

"2015-07-11",

"2015-07",

"2015",

"2015-07-11",

"2015-07",

"2015",

"2015-08-28",

"2015-08",

Page 93: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 93 -

"2015",

"2015-10-03",

"2015-10",

"2015",

"2015-11-01",

"2015-11",

"2015",

"2015-11-01",

"2015-11",

"2015",

"2015-11-01",

"2015-11",

"2015",

"2015-11-01",

"2015-11",

"2015"

],

"labels_hierarchy" : [

"en:sustainable-farming",

"en:vegetarian",

"en:utz-certified",

"en:vegan",

"en:utz-certified-cacao"

],

"labels_debug_tags" : [ ],

"categories_hierarchy" : [

"en:sugary-snacks",

"en:chocolates",

"en:dark-chocolates"

],

"pnns_groups_1" : "Sugary snacks",

"states_tags" : [

"en:to-be-checked",

"en:complete",

"en:nutrition-facts-completed",

"en:ingredients-completed",

"en:expiration-date-completed",

"en:characteristics-completed",

"en:categories-completed",

Page 94: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 94 -

"en:brands-completed",

"en:packaging-completed",

"en:quantity-completed",

"en:product-name-completed",

"en:photos-validated",

"en:photos-uploaded"

],

"checkers_tags" : [ ],

"labels_tags" : [

"en:sustainable-farming",

"en:vegetarian",

"en:utz-certified",

"en:vegan",

"en:utz-certified-cacao"

],

"code" : "25040371",

"additives_tags_n" : null,

"traces_tags" : [

"en:milk",

"en:nuts",

"en:peanuts"

],

"lang" : "es",

"photographers" : [

"javichu"

],

"generic_name" : "Mini tabletas de chocolate negro con un 70% de cacao mínimo. Nota: El mismo código de barras coincide con otros chocolates similares",

"ingredients_that_may_be_from_palm_oil_tags" : [ ],

"additives_prev_n" : NumberLong(1),

"rev" : NumberLong(22),

"_keywords" : [

"vegetariano",

"70",

"america",

"kg",

"ohg",

"otro",

"mini",

"aldi",

Page 95: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 95 -

"snack",

"utz",

"co",

"tableta",

"cacao",

"sur",

"mismo",

"dulce",

"chocolate",

"coincide",

"vegano",

"barra",

"de",

"un",

"negro",

"codigo",

"nota",

"farming",

"propiedad",

"einkauf",

"gmbh",

"con",

"minimo",

"sustainable",

"moser-roth",

"del",

"certified",

"similare",

"el"

],

"interface_version_created" : "20120622",

"editors" : [

"javichu"

],

"emb_codes" : "FABRICANTE Y ENVASADOR:,MOSER ROTH GMBH",

"max_imgid" : "7",

"additives_tags" : [

"en:e322"

],

Page 96: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 96 -

"emb_codes_orig" : "FABRICANTE Y ENVASADOR:,MOSER ROTH GMBH",

"nutrient_levels_tags" : [

"en:fat-in-high-quantity",

"en:saturated-fat-in-high-quantity",

"en:sugars-in-high-quantity",

"en:salt-in-low-quantity"

],

"informers_tags" : [

"javichu"

],

"photographers_tags" : [

"javichu"

],

"additives_n" : NumberLong(1),

"pnns_groups_2_tags" : [

"chocolate-products"

],

"unknown_nutrients_tags" : [ ],

"allergens_hierarchy" : [

"en:soybeans"

],

"categories_prev_tags" : [

"en:sugary-snacks",

"en:chocolates",

"en:dark-chocolates"

],

"packaging_tags" : [

"envoltorio-de-papel",

"caja-de-carton"

],

"nutrition_score_warning_no_fiber" : NumberLong(1),

"manufacturing_places" : "Berlín,Alemania",

"nutriments" : {

"sodium" : "0.0196850393700787",

"sugars" : "27.9",

"sugars_value" : "27.9",

"carbohydrates_unit" : "g",

"fat_unit" : "g",

"proteins_unit" : "g",

Page 97: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 97 -

"nutrition-score-fr_100g" : "23",

"fat" : "42.7",

"carbohydrates_value" : "33.5",

"proteins_serving" : "1.93",

"cocoa_serving" : "70",

"sodium_serving" : "0.00492",

"salt" : "0.05",

"proteins" : "7.7",

"salt_unit" : "g",

"nutrition-score-fr" : "23",

"sugars_unit" : "g",

"fat_serving" : "10.7",

"cocoa_value" : "70",

"fat_value" : "42.7",

"sodium_unit" : "g",

"sugars_100g" : "27.9",

"cocoa_100g" : "70",

"cocoa" : "70",

"saturated-fat_unit" : "g",

"sodium_100g" : "0.0196850393700787",

"saturated-fat_serving" : "6.42",

"energy" : "2372",

"energy_value" : "2372",

"energy_unit" : "kJ",

"sugars_serving" : "6.97",

"carbohydrates_100g" : "33.5",

"nutrition-score-uk" : "23",

"saturated-fat_value" : "25.7",

"proteins_100g" : "7.7",

"carbohydrates_serving" : "8.38",

"sodium_value" : "0.01968503937007874",

"energy_serving" : "593",

"salt_value" : "0.05",

"fat_100g" : "42.7",

"cocoa_label" : "Cacao (mínimo)",

"saturated-fat_100g" : "25.7",

"nutrition-score-uk_100g" : "23",

"salt_serving" : "0.0125",

"salt_100g" : "0.05",

Page 98: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 98 -

"cocoa_unit" : "g",

"carbohydrates" : "33.5",

"energy_100g" : "2372",

"saturated-fat" : "25.7",

"proteins_value" : "7.7"

},

"countries_tags" : [

"en:spain"

],

"ingredients_from_palm_oil_tags" : [ ],

"emb_codes_tags" : [

"fabricante-y-envasador",

"moser-roth-gmbh"

],

"brands_tags" : [

"moser-roth",

"propiedad-de",

"aldi-gmbh-co-kg",

"y",

"aldi-einkauf-gmbh-co-ohg"

],

"purchase_places" : "España",

"pnns_groups_2" : "Chocolate products",

"countries_hierarchy" : [

"en:spain"

],

"traces" : "Leche,Frutos de cáscara,Cacahuetes",

"additives_old_tags" : [

"en:e322"

],

"categories" : "Snacks dulces,Chocolates,Chocolates negros",

"ingredients_text_debug" : "Pasta de cacao, azúcar, manteca de cacao, emulgente: lecitina de _soja_ ( - e322 - ) y extracto de vainilla. Cacao: 70% mínimo. ",

"ingredients_text" : "Pasta de cacao, azúcar, manteca de cacao, emulgente: lecitina de _soja_ (E-322) y extracto de vainilla. Cacao: 70% mínimo. ",

"editors_tags" : [

"javichu"

],

"labels_prev_tags" : [

"en:sustainable-farming",

Page 99: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 99 -

"en:vegetarian",

"en:utz-certified",

"en:vegan",

"en:utz-certified-cacao"

],

"additives_old_n" : NumberLong(1),

"categories_prev_hierarchy" : [

"en:sugary-snacks",

"en:chocolates",

"en:dark-chocolates"

],

"created_t" : NumberLong(1356703457),

"product_name" : "Mini tabletas de chocolate negro 70% cacao",

"ingredients_from_or_that_may_be_from_palm_oil_n" : NumberLong(0),

"creator" : "javichu",

"no_nutrition_data" : null,

"serving_size" : "1 tableta 25 g",

"completed_t" : NumberLong(1356704305),

"last_modified_by" : "javichu",

"new_additives_n" : NumberLong(1),

"allergens" : "soja",

"additives_prev_tags" : [

"en:e322"

],

"origins" : "[CACAO],América del Sur",

"stores" : "Aldi",

"nutrition_grade_fr" : "e",

"nutrition_grades" : "e",

"nutrient_levels" : {

"salt" : "low",

"fat" : "high",

"sugars" : "high",

"saturated-fat" : "high"

},

"additives_prev" : " [ pasta-de-cacao -> es:pasta-de-cacao ] [ azucar -> es:azucar ] [ manteca-de-cacao -> es:manteca-de-cacao ] [ emulgente -> es:emulgente ] [ lecitina-de-soja -> en:e322 -> exists ] [ e322 -> en:e322 ] [ y-extracto-de-vainilla-cacao -> es:y-extracto-de-vainilla-cacao ] [ 70-minimo -> es:70-minimo ] ",

"stores_tags" : [

"aldi"

Page 100: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 100 -

],

"id" : "25040371",

"countries" : "España",

"purchase_places_tags" : [

"espana"

],

"traces_hierarchy" : [

"en:milk",

"en:nuts",

"en:peanuts"

],

"interface_version_modified" : "20120622",

"images" : {

"6" : {

"uploader" : "javichu",

"sizes" : {

"400" : {

"w" : NumberLong(163),

"h" : NumberLong(400)

},

"100" : {

"w" : NumberLong(41),

"h" : NumberLong(100)

},

"full" : {

"w" : NumberLong(813),

"h" : NumberLong(1999)

}

},

"uploaded_t" : NumberLong(1436608233)

},

"front" : {

"white_magic" : "false",

"normalize" : "false",

"rev" : "16",

"geometry" : "0x0-0-0",

"sizes" : {

"200" : {

"w" : NumberLong(81),

Page 101: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 101 -

"h" : NumberLong(200)

},

"400" : {

"w" : NumberLong(163),

"h" : NumberLong(400)

},

"100" : {

"w" : NumberLong(41),

"h" : NumberLong(100)

},

"full" : {

"w" : NumberLong(813),

"h" : NumberLong(1999)

}

},

"imgid" : "6"

},

"3" : {

"uploader" : "javichu",

"sizes" : {

"400" : {

"w" : NumberLong(163),

"h" : NumberLong(400)

},

"full" : {

"w" : NumberLong(814),

"h" : NumberLong(2000)

},

"100" : {

"w" : NumberLong(41),

"h" : NumberLong(100)

}

},

"uploaded_t" : NumberLong(1356703480)

},

"7" : {

"uploader" : "javichu",

"sizes" : {

"400" : {

Page 102: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 102 -

"w" : NumberLong(166),

"h" : NumberLong(400)

},

"full" : {

"w" : NumberLong(831),

"h" : NumberLong(1999)

},

"100" : {

"w" : NumberLong(42),

"h" : NumberLong(100)

}

},

"uploaded_t" : NumberLong(1436608241)

},

"nutrition" : {

"white_magic" : "false",

"normalize" : "false",

"rev" : "18",

"geometry" : "0x0-0-0",

"sizes" : {

"200" : {

"w" : NumberLong(200),

"h" : NumberLong(166)

},

"400" : {

"w" : NumberLong(400),

"h" : NumberLong(332)

},

"100" : {

"w" : NumberLong(100),

"h" : NumberLong(83)

},

"full" : {

"w" : NumberLong(582),

"h" : NumberLong(483)

}

},

"imgid" : "4"

},

Page 103: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 103 -

"2" : {

"uploader" : "javichu",

"sizes" : {

"400" : {

"w" : NumberLong(400),

"h" : NumberLong(202)

},

"100" : {

"w" : NumberLong(100),

"h" : NumberLong(51)

},

"full" : {

"w" : NumberLong(435),

"h" : NumberLong(220)

}

},

"uploaded_t" : NumberLong(1356703471)

},

"4" : {

"uploader" : "javichu",

"sizes" : {

"400" : {

"w" : NumberLong(400),

"h" : NumberLong(332)

},

"100" : {

"w" : NumberLong(100),

"h" : NumberLong(83)

},

"full" : {

"w" : NumberLong(582),

"h" : NumberLong(483)

}

},

"uploaded_t" : NumberLong(1436608227)

},

"1" : {

"uploader" : "javichu",

"sizes" : {

Page 104: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 104 -

"400" : {

"w" : NumberLong(400),

"h" : NumberLong(367)

},

"full" : {

"w" : NumberLong(419),

"h" : NumberLong(384)

},

"100" : {

"w" : NumberLong(100),

"h" : NumberLong(92)

}

},

"uploaded_t" : NumberLong(1356703468)

},

"ingredients" : {

"normalize" : "false",

"white_magic" : "false",

"rev" : "17",

"geometry" : "0x0-0-0",

"sizes" : {

"200" : {

"w" : NumberLong(200),

"h" : NumberLong(43)

},

"400" : {

"w" : NumberLong(400),

"h" : NumberLong(86)

},

"full" : {

"w" : NumberLong(856),

"h" : NumberLong(185)

},

"100" : {

"w" : NumberLong(100),

"h" : NumberLong(22)

}

},

"imgid" : "5"

Page 105: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 105 -

},

"5" : {

"uploader" : "javichu",

"sizes" : {

"400" : {

"w" : NumberLong(400),

"h" : NumberLong(86)

},

"full" : {

"w" : NumberLong(856),

"h" : NumberLong(185)

},

"100" : {

"w" : NumberLong(100),

"h" : NumberLong(22)

}

},

"uploaded_t" : NumberLong(1436608232)

}

},

"fruits-vegetables-nuts_100g_estimate" : NumberLong(0),

"sortkey" : NumberLong(1446383219),

"last_modified_t" : NumberLong(1446383219),

"nutrition_score_debug" : " -- energy 7 + sat-fat 10 + fr-sat-fat-for-fats 3 + sugars 6 + sodium 0 - fruits 0% 0 - fiber 0 - proteins 4 -- fsa 23 -- fr 23",

"correctors_tags" : [

"javichu"

],

"correctors" : [ ],

"categories_debug_tags" : [ ],

"brands" : "Moser-Roth,//Propiedad de://,Aldi GmbH & Co. KG,y,Aldi Einkauf GmbH & Co. oHG",

"ingredients_tags" : [

"pasta-de-cacao",

"azucar",

"manteca-de-cacao",

"emulgente",

"322-y-extracto-de-vainilla-cacao",

"minimo",

"lecitina-de-soja",

Page 106: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 106 -

"e"

],

"codes_tags" : [

"code-8",

"25040371",

"2504037x",

"250403xx",

"25040xxx",

"2504xxxx",

"250xxxxx",

"25xxxxxx",

"2xxxxxxx"

],

"states" : "en:to-be-checked, en:complete, en:nutrition-facts-completed, en:ingredients-completed, en:expiration-date-completed, en:characteristics-completed, en:categories-completed, en:brands-completed, en:packaging-completed, en:quantity-completed, en:product-name-completed, en:photos-validated, en:photos-uploaded",

"informers" : [

"javichu"

],

"entry_dates_tags" : [

"2012-12-28",

"2012-12",

"2012"

],

"nutrition_grades_tags" : [

"e"

],

"packaging" : "Envoltorio de papel,Caja de cartón",

"ingredients_text_with_allergens" : "Pasta de cacao, azúcar, manteca de cacao, emulgente: lecitina de <span class=\"allergen\">soja</span> (E-322) y extracto de vainilla. Cacao: 70% mínimo. ",

"serving_quantity" : NumberLong(25),

"origins_tags" : [

"cacao",

"america-del-sur"

],

"manufacturing_places_tags" : [

"berlin",

"alemania"

],

Page 107: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 107 -

"nutrition_data_per" : "100g",

"labels" : "Sustainable farming,Vegetariano,UTZ Certified,Vegano,UTZ Certified Cacao",

"link" : "https://www.aldi.es/detalle-producto/Tableta-de-chocolate-00003/",

"cities_tags" : [ ],

"emb_codes_20141016" : "//FABRICANTE Y ENVASADOR://,MOSER ROTH GMBH",

"categories_tags" : [

"en:sugary-snacks",

"en:chocolates",

"en:dark-chocolates"

],

"quantity" : "125 g (5 x 25 g)",

"labels_prev_hierarchy" : [

"en:sustainable-farming",

"en:vegetarian",

"en:utz-certified",

"en:vegan",

"en:utz-certified-cacao"

],

"expiration_date" : "01-06-2016",

"states_hierarchy" : [

"en:to-be-checked",

"en:complete",

"en:nutrition-facts-completed",

"en:ingredients-completed",

"en:expiration-date-completed",

"en:characteristics-completed",

"en:categories-completed",

"en:brands-completed",

"en:packaging-completed",

"en:quantity-completed",

"en:product-name-completed",

"en:photos-validated",

"en:photos-uploaded"

],

"ingredients_that_may_be_from_palm_oil_n" : NumberLong(0),

"allergens_tags" : [

"en:soybeans"

],

Page 108: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 108 -

"ingredients_from_palm_oil_n" : NumberLong(0),

"ingredients" : [

{

"text" : "Pasta de cacao",

"id" : "pasta-de-cacao",

"rank" : NumberLong(1)

},

{

"text" : "azúcar",

"id" : "azucar",

"rank" : NumberLong(2)

},

{

"text" : "manteca de cacao",

"id" : "manteca-de-cacao",

"rank" : NumberLong(3)

},

{

"text" : "emulgente",

"id" : "emulgente",

"rank" : NumberLong(4)

},

{

"text" : "322) y extracto de vainilla. Cacao",

"id" : "322-y-extracto-de-vainilla-cacao",

"rank" : NumberLong(5)

},

{

"percent" : "70",

"text" : "mínimo.",

"id" : "minimo",

"rank" : NumberLong(6)

},

{

"text" : "lecitina de _soja_",

"id" : "lecitina-de-soja"

},

{

"text" : "E",

Page 109: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 109 -

"id" : "e"

}

],

"lc" : "es",

"ingredients_debug" : [

"Pasta de cacao",

null,

" azúcar",

null,

" manteca de cacao",

null,

" emulgente",

null,

" lecitina de _soja_ ",

null,

"",

" - ",

"e322",

" - ",

"",

null,

" y extracto de vainilla. Cacao",

null,

" 70% mínimo. "

],

"pnns_groups_1_tags" : [

"sugary-snacks"

],

"checkers" : [ ],

"additives" : " [ pasta-de-cacao -> es:pasta-de-cacao ] [ azucar -> es:azucar ] [ manteca-de-cacao -> es:manteca-de-cacao ] [ emulgente -> es:emulgente ] [ lecitina-de-soja -> en:e322 -> exists ] [ e322 -> en:e322 ] [ y-extracto-de-vainila-cacao -> es:y-extracto-de-vainilla-cacao ] [ 70-minimo -> es:70-minimo ] ",

"complete" : NumberLong(1),

"additives_debug_tags" : [ ],

"ingredients_ids_debug" : [

"pasta-de-cacao",

"azucar",

"manteca-de-cacao",

"emulgente",

Page 110: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 110 -

"lecitina-de-soja",

"e322",

"y-extracto-de-vainilla-cacao",

"70-minimo"

]

}

7.2. Información etiquetas de productos

(Fuente: http://world.openfoodfacts.org/data/data-fields.txt)

This file describes the fields from the CSV export of the products in the Open Food Facts database.

See http://world.openfoodfacts.org/data for more information.

The file encoding is Unicode UTF-8. The character that separates fields is <tab> (tabulation).

Generalities:

- fields that end with _t are dates in the UNIX timestamp format (number of seconds since Jan 1st 1970)

- fields that end with _datetime are dates in the iso8601 format: yyyy-mm-ddThh:mn:ssZ

- fields that end with _tags are comma separated list of tags (e.g. categories_tags is the set of normalized tags computer from the categories field)

- fields that end with a language 2 letter code (e.g. fr for French) is the set of tags in that language

- fields that end with _100g correspond to the amount of a nutriment (in g) for 100 g or 100 ml of product

List of fields:

# general information:

code : barcode of the product (can be EAN-13 or internal codes for some food stores), for products without a barcode, Open Food Facts assigns a number starting with the 200 reserved prefix

url : url of the product page on Open Food Facts

creator : contributor who first added the product

Page 111: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 111 -

created_t : date that the product was added (UNIX timestamp format)

created_datetime : date that the product was added (iso8601 format: yyyy-mm-ddThh:mn:ssZ)

last_modified_t : date that the product page was last modified

last_modified_datetime

product_name : name of the product

generic_name

quantity : quantity and unit

# tags:

packaging : shape, material

packaging_tags

brands

brands_tags

categories

categories_tags

categories_fr

origins : origins of ingredients

origins_tags

manufacturing_places : places where manufactured or transformed

manufacturing_places_tags

labels

labels_tags

labels_fr

emb_codes

emb_codes_tags

first_packaging_code_geo : coordinates corresponding to the first packaging code indicated

cities

cities_tags

purchase_places

stores

countries : list of countries where the product is sold

countries_tags

countries_fr

# ingredients:

ingredients_text

Page 112: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 112 -

traces

traces_tags

# misc. data:

serving_size : serving size in g

no_nutriments : indicates if the nutrition facts are indicated on the food label

additives_n : number of food additives

additives

additives_tags

ingredients_from_palm_oil_n

ingredients_from_palm_oil

ingredients_from_palm_oil_tags

ingredients_that_may_be_from_palm_oil_n

ingredients_that_may_be_from_palm_oil

ingredients_that_may_be_from_palm_oil_tags

nutrition_grade_fr : nutrition grade ('a' to 'e'). see http://fr.openfoodfacts.org/score-nutritionnel-experimental-france

main_category

main_category_fr

image_url

image_small_url

# nutrition facts:

energy_100g

proteins_100g

casein_100g

serum-proteins_100g

nucleotides_100g

carbohydrates_100g

sugars_100g

sucrose_100g

glucose_100g

fructose_100g

lactose_100g

maltose_100g

maltodextrins_100g

starch_100g

polyols_100g

Page 113: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 113 -

fat_100g

saturated-fat_100g

butyric-acid_100g

caproic-acid_100g

caprylic-acid_100g

capric-acid_100g

lauric-acid_100g

myristic-acid_100g

palmitic-acid_100g

stearic-acid_100g

arachidic-acid_100g

behenic-acid_100g

lignoceric-acid_100g

cerotic-acid_100g

montanic-acid_100g

melissic-acid_100g

monounsaturated-fat_100g

polyunsaturated-fat_100g

omega-3-fat_100g

alpha-linolenic-acid_100g

eicosapentaenoic-acid_100g

docosahexaenoic-acid_100g

omega-6-fat_100g

linoleic-acid_100g

arachidonic-acid_100g

gamma-linolenic-acid_100g

dihomo-gamma-linolenic-acid_100g

omega-9-fat_100g

oleic-acid_100g

elaidic-acid_100g

gondoic-acid_100g

mead-acid_100g

erucic-acid_100g

nervonic-acid_100g

trans-fat_100g

cholesterol_100g

fiber_100g

sodium_100g

alcohol_100g : % vol of alcohol

Page 114: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 114 -

vitamin-a_100g

vitamin-d_100g

vitamin-e_100g

vitamin-k_100g

vitamin-c_100g

vitamin-b1_100g

vitamin-b2_100g

vitamin-pp_100g

vitamin-b6_100g

vitamin-b9_100g

vitamin-b12_100g

biotin_100g

pantothenic-acid_100g

silica_100g

bicarbonate_100g

potassium_100g

chloride_100g

calcium_100g

phosphorus_100g

iron_100g

magnesium_100g

zinc_100g

copper_100g

manganese_100g

fluoride_100g

selenium_100g

chromium_100g

molybdenum_100g

iodine_100g

caffeine_100g

taurine_100g

ph_100g : pH (no unit)

fruits-vegetables-nuts_100g : % of fruits, vegetables and nuts (excluding potatoes, yams, manioc)

carbon-footprint_100g : carbon footprint (indicated on some products)

nutrition-score-fr_100g : experimental nutrition score derived from the UK FSA score and adapted for the French market (formula defined by the team of Professor Hercberg)

Page 115: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 115 -

nutrition-score-uk_100g : nutrition score defined by the UK Food Standards Administration (FSA)

7.3. Distribución de productos Open Food Facts

Tabla 4 - Distribución de productos por país

País Productos País Productos País Productos

France 54697 Lebanon 27 Costa Rica 3

Germany 4307 French Polynesia

25 El Salvador 3

United Kingdom 4260 Singapore 24 Azerbaijan 3

Spain 4102 fr:Quebec 24 Mozambique 3

Belgium 2738 Bulgaria 24 Dominican Republic 3

United-states 2695 Colombia 24 Ghana 3

Switzerland 2249 Indonesia 23 Estonia 3

Australia 1536 South Africa

22 Ecuador 3

Italy 783 Finland 21 Cyprus 3

Canada 642 es:Europe 20 Moldova 3

Portugal 640 Côte d'Ivoire

20 Georgia 3

Denmark 371 Qatar 17 Nigeria 3

Brazil 323 Kuwait 16 Kenya 2

Netherlands 275 Scotland 15 Other-日本 2

fr:Europe 257 Slovenia 15 Republic of the Congo

2

Austria 231 Philippines 13 Haiti 2

Guadeloupe 184 Mauritius 12 Angola 2

Réunion 179 Kazakhstan 11 Armenia 2

Czech Republic 172 Iraq 11 Mauritania 2

Thailand 154 Slovakia 11 Myanmar 2

Poland 149 Lithuania 11 ar:Tunisie 2

Russia 147 United States of America

10 Brunei 2

Ireland 141 Monaco 10 Tanzania 2

Luxembourg 139 Peru 10 Niger 2

China 139 Albania 10 Guinea 2

Tunisia 131 Ukraine 10 Vanuatu 2

Page 116: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 116 -

Japan 106 South Korea

9 Central African Republic

2

French Guiana 104 Gabon 8 Tunisie 1

Morocco 102 Vietnam 8 Deutschland 1

Romania 96 Egypt 8 Other-turquie 1

New Zealand 86 Latvia 7 Sint Maarten 1

Algeria 76 Mongolia 7 Puerto Rico 1

Martinique 70 Pakistan 7 1 تونس

Hong Kong 59 Mayotte 7 Virgin Islands of the United States

1

New Caledonia 58 Andorra 7 An 1

Sweden 56 Cuba 7 Guatemala 1

Greece 54 Aruba 7 Republique-de-chine 1

Saudi Arabia 53 Malawi 6 Jordan 1

Chile 50 Malta 6 France 1

Mexico 49 Malaysia 6 Mali 1

Hungary 46 Bahrain 6 Other-japon 1

European Union 41 Togo 5 Guinea-Bissau 1

Saint Pierre and Miquelon 40 Venezuela 5 Other-عراق 1 ال

Senegal 38 Burkina Faso

5 Democratic Republic of the Congo

1

United Arab Emirates 36 Panama 5 Burundi 1

Taiwan 36 Cook Islands

5 Macau 1

Cambodia 33 Serbia 5 Bangladesh 1

Argentina 31 Szczecin 5 Belize 1

Iceland 30 Iran 4 Syria 1

Norway 30 Croatia 4 Sri Lanka 1

Israel 30 Belarus 4 Ethiopia 1

India 28 日本 4 Yemen 1

Turkey 27 Allemagne 3 Maldives 1

Saint Martin 1

Other-other-日本 1

Page 117: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 117 -

8. AGRADECIMIENTOS

Mi más profundo agradecimiento a mi mujer Paula, quien me brindó su apoyo y compañía

durante estos nueve largos meses que duro el master. A mis padres quienes me enseñaron a

trabajar con esmero y dedicación, a los colegas que se interesaron por este trabajo y con los

cuales hemos compartido ideas y experiencias. A los profesionales que colaboraron en la

retroalimentación del trabajo, y a todos los compañeros y profesores de master que de alguna

u otra manera contribuyeron para que este trabajo sea posible, mi más sincero

agradecimiento.

Page 118: ¿Como puede ayudar el Big Data al sector alimentario?

Big Data: Aplicación y Utilidad en el Sistema Alimentario – Juan Olivera

- 118 -

AUTORIZACIÓN DE DIFUSIÓN

El/la abajo firmante, matriculado/a en el Máster Universitario en Arquitectura del Software,

autorizará a la Universidad a Distancia de Madrid (UDIMA) a difundir y utilizar con fines

académicos, no comerciales y mencionando expresamente a su autor el Trabajo Fin de

Máster: “BIG DATA: Aplicación y Utilización en el Sistema Alimentario”, realizado durante

el curso académico 2015-2016 bajo la dirección de Juan Alfonso Lara Torralbo en el

Departamento de Ingeniería en Informática y Organización Industrial y a la Biblioteca de la

UDIMA a depositarlo en el Archivo Institucional con el objeto de incrementar la difusión,

uso e impacto del trabajo en Internet y garantizar su preservación y acceso a largo plazo.