python

Python y big data

Al paso que R ha sido de forma tradicional el lenguaje de programación escogido por los científicos de datos, poquito a poco va cediendo terreno a Python.
Aunque hay múltiples razones para el cambio, quizá la más esencial es que Python es de empleo general y de manera comparativa más simple de aprender, al tiempo que R prosigue siendo un ambiente de programación bastante complejo de dominar. En un planeta poco a poco más dependiente de los datos y con “hambre” de científicos de datos, lo simple gana.

Python-Programming-Language

R no es verdaderamente un lenguaje

Una de las razones por la que a la gente le cuesta aprender R es por el hecho de que no es verdaderamente un lenguaje de programación. R es más bien un ambiente interactivo para hacer estadísticas, y es por esta razón que sea considerablemente más bastante difícil para los aspirantes a desarrolladores captar sus matices.

Mas R es bastante difícil aun para personas con experiencia en instrumentos estadísticos como SAS y SPSS, como resalta Bob Muenchen. “R reduce probablemente la dificultad de esta clase de análisis, en tanto que incorpora los lenguajes de macros y de matrices, entre otras muchas cosas, que herramientas como SPSS requieren el propio usuario domine. Mas para aquellos que aguardan que R funcione como Stata, siento decirles que no es así”.

Por lo general, R es diferente, lo que hace que sea bastante difícil.

Python es considerablemente más alcanzable

Python, no obstante, es considerablemente más alcanzable. Por una parte, un extenso abanico de desarrolladores están familiarizados con Python y lo usan para una extensa gama de aplicaciones. En contraste a R, que prácticamente solo se emplea para el análisis de datos, un desarrollador puede iniciar de manera rápida a probar con Python.

Las compañías cada vez dan más relevancia a los datos y luchan por hallar los científicos de datos más cualificados. Frecuentemente, no obstante, semejantes científicos de datos pueden estar ya trabajando en la propia empresa y probablemente tengan alguna familiaridad con Python. Dada la relevancia de un buen análisis de datos, la capacitación en las tecnologías Big Data apropiadas es considerablemente más eficaz que contratar y formar nuevos científicos de datos en programas más complejos.

Beneficios de Python

Uno de los mayores beneficios de hacer ciencia de datos en Python es la eficacia de la utilización de un lenguaje de programación mediante diferentes aplicaciones. Tal Yarkoni, estudioso asociado en la Universidad de Texas, explica:

“Hacer todo el desarrollo y análisis en un mismo lenguaje aporta un importante beneficio. Cuando haces todo en un mismo lenguaje, no debes padecer el incesante cambio de contexto y el tiempo perdido que acarrea. Además de esto, tampoco precisas preocuparte sobre la interfaz a emplear por diferentes lenguajes y en diferentes unas partes del código. No hay solamente molesto que parsear texto en Python y caer en la cuenta que debes redactar en el disco en un formato diferente solo para poder manejarlo con R o bien MATLAB. Esto puede no parecer un enorme inconveniente (no lleva bastante tiempo redactar un CSV o bien JSON con Python y leerlo desde R) mas son cosas que van sumando.”

Por más que podamos loar tecnología de nicho que soluciona un inconveniente realmente bien, las tecnologías que tienden a ganar son las herramientas de empleo general que resuelven una serie de inconvenientes. Conforme el directivo de Optimización y Análisis de AppNexus, David Himrod, “Uno de los mayores desafíos a los que AppNexus se encara es de qué forma lograr un conjunto distintos de empleados que trabajen con exactamente la misma tecnología. Python da a los empleados de diferentes orígenes (particularmente los ingenieros, matemáticos y analistas) un lenguaje común, simple de comprender que se puede emplear para crear prototipos de nuevas funcionalidades para la empresa”.

La Ciencia de Datos y Python

A Python aún le falta algo de la riqueza de R para el análisis de datos, mas se está acercando de manera rápida. La clave para el éxito de Python no necesariamente es su capacidad para hacer en frente de las funciones más arcanas de R (o bien cualquier otra herramienta de análisis), sino su proximidad y su empleo general. La ciencia de datos se mueve fuera de la esfera de los “geeks alfa”, algo que fue meridianamente evidente en la conferencia de O’Reilly Strata en la ciudad de Nueva York el mes pasado. Los Doctores acostumbraban a ocupar sus salas, al paso que ahora los analistas y demás personas encargadas por sus empresas para descubrir sobre Big Data, formaban la mayor parte de los asistentes.

Y esta nueva mayoría de científicos de datos resulta más probable que utilicen Python que R. Como en otros mercados, las herramientas que conocemos o bien que son simples de aprender tienen más probabilidades de ganar.

big-data

Big data, soluciones a retos

Actualmente las empresas se ven con nuevos problemas que anteriormente no tenían. Nuevos tipos de datos, nuevas exigencias de rendimiento a la hora de procesamiento, nuevos enfoques de soluciones BI… por ello, han surgido diferentes propuestas para atacar problemas concretos comentados en el post anterior. No sustituyen a las BD Relacionales ni a los procesos de creación de proyectos BI, sino que son “herramientas” con las que podemos trabajar para resolver con mayor eficacia esos problemas.

Bases de dato big data

Son nuevos datos y nuevas formas de almacenar estos datos que surgen en la actualidad. Por ello, surgen nuevos gestores como los NoSQL que buscan dar solución a los 3 problemas anteriores (escalabilidad, heterogeneidad y rendimiento). Por ejemplo, las BD clave-valor consiguen almacenar de forma sencilla diferentes tipos de datos no estructurados, sería un símil a tener una fila con 2 columnas y después una fila con columnas dinámicas. Esto en las relacionales es impensable. En un punto posterior se analizarán estas bases de datos propuestas.

Sistema de archivos distribuido para garantizar escalabilidad.

El problema de la reducción de datos ha sido uno de los grandes problemas de Google al inicio de su actividad. Necesitaban procesar millones de millones de páginas para poder obtener el resultado de su PageRank de forma resumida, por lo tanto crearon un algoritmo el cual conseguía resumir de forma sencilla todos esos datos. Crearon el corazón del BigData, el concepto del algoritmo MapReduce . Después llegó Yahoo y creó la cáscara que envuelve el MapReduce, comúnmente llamado Hadoop. La gran base que garantiza ejecutar programas MapReduce hechos por usuarios en nodos distribuidos. Esta herramienta tiene un sistema de archivos HDFS el cual provee la distribución de trabajos a diferentes nodos que ejecutarán en 8 paralelo este algoritmo de reducción.

Una de las cosas más importantes es que el HDFS consigue hacer transparente o simplificar la creación de clusters de nodos que trabajan en paralelo como un nodo solo. Si necesitas más potencia es simplemente añadir una nueva IP de un nodo en un fichero. Fácil y sencillo. Este sistema HDFS es la base del BigData pues están surgiendo y se desarrollan herramientas que son ejecutadas encima de este sistema HDFS pudiendo obtener aplicaciones distribuidas. Las más importantes son las BD como HBASE o HIVE (que realmente no es una BD sino un intérprete SQL que traduce MapReduce). Son dos herramientas que se ejecutan encima del HDFS de forma sencilla pero que actúan sobre un cluster de N nodos con transparencia. Si necesitamos más potencia o espacio añadimos un nuevo nodo como anteriormente. Las consultas irán más rápido conforme añadamos nodos a nuestro cluster. La famosa teoría del DIVIDE Y VENCERÁS .

big data

Big Data. Problemas actuales

La teoría que nos enseñan en la carrera de informática es que el modelo tradicional de BD es el relacional que con ello podemos hacer todo. Hasta hace relativamente poco, inclusos los hay que aún solventan cualquier problema con relacionales. Actualmente hay una serie de problemáticas con este tipo de BD que se resumen en estos 3 puntos:

Tipos de datos. Variedad

Han surgido nuevos tipos de datos que se quieren almacenar: datos no estructurados. Las BD Relacionales no pueden almacenar este tipo de datos.

Escalabilidad

En búsqueda de la rapidez y rendimiento en consultas o procesamiento de datos se busca escalar siempre en horizontal. Es decir, si necesitamos más rendimiento añadimos una CPU a nuestro conjunto de trabajo para poder aumentar nuestras prestaciones en conjunto y aumentar el rendimiento reduciendo el tiempo de búsqueda o almacenamiento. El problema es que actualmente las BDRelacionales no pueden estar distribuidas en nodos diferentes de forma sencilla transparente al usuario. Por ello la única forma de conseguir estos dos objetivos en las BD Relacionales es añadiendo CPU y Memoria, haciendo escalabilidad vertical. Pero esto no es suficiente, buscamos escalabilidad 6 horizontal para tener todos los servidores que queramos trabajando en paralelo y no tener un límite como es el caso del escalado vertical.

Modelo relacional

El modelo relacional no da soporte para todos los problemas. No podemos atacar todos los problemas con el mismo enfoque, queremos optimizar al 100% nuestro sistema y no podemos ajustar nuestros sistemas a estas BD. Por ejemplo, en el modelo relacional no podemos tener herencia de objetos o no podemos tener columnas variables según las filas…

Velocidad

Esta es una de las “3 V’s” del Big Data (velocidad, variedad, volumetría). La velocidad de generación de datos hoy en día es muy elevada, simplemente hay que verlo con las redes sociales actuales, aunque las empresas medias y muchas de las grandes no se ven afectadas por ello. Donde sí influye la velocidad es en el procesamiento de todo este conjunto ingente de datos, pues cuantos más datos tengamos más tiempo requieren. Por ello, se necesita un ecosistema que sea capaz de escalar en horizontal para trabajar en paralelo y ahorrar tiempo, siguiendo la técnica del “divide y vencerás”.

Por ello, teniendo en cuenta estos principales problemas, se han creado nuevas herramientas y sistemas para poder tener alternativas, que no sustituyen a las actuales, sino que aportan una forma alternativa de atacar problemas y/o mejorar nuestra solución de procesamiento y análisis de datos.

bigdata-1

Big Data, ¿qué es?

Hoy en día hay mucha confusión y demasiado populismo con este nuevo término llamado BIG DATA. A cualquier proyecto de análisis de datos se le está poniendo la etiqueta de BigData simplemente por que se tratan muchos datos. Entre los consultores BI está siempre la conversación y la gran mayoría, por no decir todos, creen que se está sustituyendo BI por BigData.

Surgen muchos Masters, cursos y charlas que en su contenido el 70%-80% es teoría de BI y el otro 20% es cómo usar tecnologías Big Data… Desde este documento, se busca dar un punto de vista de qué es BigData y cómo se asocia al Business Intelligence de forma natural.

Desde antaño, las empresas vienen sufriendo transformaciones debido a la tecnología. Los ejecutivos empezaron a gestionar sus empresas sin guardar datos pues no existía ningún medio para ello, después surgió la tecnología y comenzaron a usar base de datos con pocos datos que se fueron transformando y creciendo hasta un punto de tener que surgir nuevas formas de “análisis” y “digestión” de esa información.

Es ahí que surgieron las tecnologías y procesos de Business Intelligence que buscaban analizar esos datos que no podían analizar a simple vista. Pero ahora, con la evolución de la tecnología han surgido nuevos tipos de datos que no hay como tratar con las tecnologías de siempre y también se generan millones de datos en muy poco tiempo que no se pueden almacenar pero sí se quiere analizar. Es por ello que surgen estas tecnologías y procesos BigData que buscan proveer a aplicaciones empresariales de las carencias que las actuales no consiguen proveer. Veamos un poco los retos y qué propuestas hay actualmente en el ecosistema BigData y BI.

Actualmente las empresas están viendo cómo el mundo de la tecnología está creciendo y transformándose. Surgen nuevos tipos de datos y necesidades que actualmente los sistemas no son suficientemente buenos o adecuados para poder atacar estos problemas pues las empresas son más exigentes y buscan exprimir al máximo sus recursos para obtener el mayor beneficio. Sería semejante a escuderías de F1 que buscan superar al rival buscando la diferencia hasta en los grados de regulación de un alerón, analizando y optimizando al mayor detalle.

En siguientes entradas, se expondrán algunos de los muchos problemas, pero estos que se destacan quizás son unos de los principales motivos que ha hecho que surja todo ese ecosistema de procesos y herramientas “BigData”.

Referencias

https://es.wikipedia.org/wiki/Big_data