Friday, September 8, 2017

Sqoop - agilizando ingesta de datos entre una Base de Datos Relacional y Hadoop

Cuando se necesita pasar datos desde una base de datos relacional hacia otra, basta con hacer consultas sin preocuparse mucho de la persistencia. Cuando tenemos que operar una gigantesta base de datos relacional, pasando una copia a otra base de datos con el objetivo de analizar rápidamente lo recolectado, tenemos que considerar que esa operación puede tomar horas ¿Qué sucede si la ingesta se realiza diariamente?

Apache Sqoop


Apache Sqoop se creó para realizar transferencias de datos en forma masiva entre base de datos relacionales o un mainframe y Apache Hadoop. Durante el año 2009 nació como un módulo para Hadoop, se desacoplo de Hadoop y ya en el año 2010 se convirtió en un proyecto de Apache. En marzo de 2012 se convirtió en un proyecto de prioridad  para Apache Software Foundation (AFS).

¿Qué hace?


La forma en que Sqoop replica la data puede parecer muy simple. Sqoop importa los datos en paralelo usando múltiples mappers donde cada uno colecta una parte de la tabla. Luego esos datos son almacenados en el HDFS y los disponibiliza para ser procesados. La opción de enviar los datos procesados a una base de datos relacional también es soportada.

Ventajas


  • Integración con el ecosistema Hadoop
  • Las estructuras que forma Sqoop al importar la data se integra fácilmente con sistemas Hadoop como Hive y HBase. Los datos importados quedan en diferentes archivos dentro de Hadoop, facilitando el uso de los datos.
  • Los comandos son simples, además de configurables. En caso se necesite hacer algo especial, por ejemplo, un nuevo driver para una base de datos o aplicar un nuevo criterio para separar las consultas sql, entonces se pueden utilizar clases Java.
  • Sqoop permite obtener solamente una parte de la data como lo que ha sido agregado después de la última ingesta.

Desventajas


  • Es importante considerar que bases de datos muy grandes requieren de una gran cantidad de consultas. Muchos mappers en paralelo pueden sobrecargar a la base de datos.
  • Cuando se trabaja con múltiples mappers, es necesario asegurar que tienen la misma carga de trabajo. Es común que la consulta sql que usa un mapper colecte más datos que los otros. Eso se puede solucionar usando una key representativa y que se encuentre bien distribuida dentro de la tabla. Por ejemplo, no es lo mismo trabajar con una base de datos que tiene id’s incrementales que con otra que usa un String como key.
  • No es capaz de actualizar los datos existentes. Sin embargo, ese tipo de trabajo se encuentra afuera de la esencia de Hadoop, escribir una vez y leer muchas veces la data.
  • Si el proceso de exportar datos hacia una base de datos relacional falla durante su ejecución, no hay posibilidades de rollback. Sqoop hace commit después de una cierta cantidad de datos insertados.


Sqoop es una herramienta open source que permite a los usuarios extraer datos desde una fuente estructurada hacia Hadoop, agilizando esas tareas y soportando a las bases de datos relacionales más utilizadas.

Friday, September 1, 2017

Poder y conocimiento

¿Cómo sería el mundo si los doctores y enfermeros no tuvieran la preparación para sanarnos? ¿Qué pasaría si los autos comienzan a fallar y nadie supiera cómo arreglarlos? ¿O si la luz y agua tuvieran problemas en su distribución y no existiera alguna persona o equipo con el conocimiento para llegar a una solución?

El poder del conocimiento


En el trabajo dependemos de esas personas que conocen los detalles de cómo funcionan los productos, también de quienes conocen cómo utilizar una tecnología y los efectos de implementarlas en diferentes contextos. Esas personas son imprescindibles y mantenerlas se convierte en prioridad, es normal que hagan el trabajo de todo un equipo.


Las decisiones son tomadas por los más experimentados, ellos tienen un mayor contexto y las organizaciones dependen de este tipo de personas, nosotros también.


Los gobiernos y empresas tienen poder porque tienen las herramientas para producir e influenciar a la comunidad en general. Pueden movilizar trabajadores y empresas para que provean servicios que busquen beneficiar a todos, o al menos ese debería ser el motivo.


La sociedad del conocimiento


Las sociedades, entendiéndose como a un país, dependen del conocimiento para funcionar. Los ciudadanos son los que lo poseen y lo usan para generar riqueza y servicios de calidad para todos.

Para que los servicios sean accesibles se tiene que tener algo más de conocimiento, el sentido de comunidad también es algo que se debe desarrollar y lamentablemente, eso es algo que falta también en las sociedades con mayores conocimientos. Los resultados son limitados cuando sólo una pequeña parte de la población tiene acceso.


Estudia, aprende y no pares de compartir conocimiento


¿Qué pasa cuando nos quedamos con un conocimiento y no lo disponibilizamos? La riqueza se distribuye mal, hay falta de satisfacción laboral y nuestra salud empeora.


Comparte todo el conocimiento que puedas, nivela hacia arriba a tus pares. Más allá de beneficiar a los demás, también lo haces tú trabajando con personas más capacitadas que facilitan incluso tu trabajo. Como resultado tendrás más horas para hacer lo que te guste, los servicios que tú utilizas serán de mejor calidad y también podrás optar a ese puesto de trabajo que siempre has querido porque en el actual ya eres reemplazable.

Thursday, August 24, 2017

Nunca pares de innovar

¿Qué podemos hacer cuando el trabajo se vuelve monótono y vemos que nuestras capacidades van más allá de lo que nos piden? ¿Cómo llegar a ese producto nuevo que puede salvar a nuestra compañía? ¿Cómo mantener a un equipo motivado? ¿Cómo impulsar tu carrera proponiendo y desarrollando tus propias ideas?

Cada uno de nosotros tiene aspiraciones y ganas de ser valorados, especialmente en las organizaciones donde trabajamos. Una manera de ser un referente es dando a conocer tu sello innovador.

¿Dónde está la innovación?


La innovación en el trabajo se desarrolla buscando cómo entregar más de lo que nos están pidiendo. Puede ser un software de muy buena calidad para facilitar su evolución, o proponiendo y evaluando nuevas prácticas en tus equipos de trabajo, la invención de un nuevo producto o componente que resuelve un problema o que sale de los estándares también son ejemplos de innovación.

Desafíos al hacer innovación


Para llevar a cabo un proyecto de innovación se tiene que convencer a los dueños de los productos que algunas veces sólo ven los riesgos que deben asumir. En muchos otros casos, las innovaciones vienen desde los mismos trabajadores que buscan hacer mejores productos o que visualizan herramientas útiles para su trabajo diario, en esos casos son ellos mismos los que tienen que asumir los costes de tiempo.

El tiempo es una de las mayores barreras para desarrollar y llevar a cabo una idea propia donde la planificación y priorización de las tareas son la clave. Cuando se trabaja en equipo, todos tienen que creer en el proyecto, estar convencidos de que la idea es buena o esa es la forma en que deben distribuir su tiempo. Establecer metas en tiempo, tener momentos dedicados a la innovación y la distribución del trabajo son imprescindibles en un equipo.

Los beneficios de la innovación


Es verdad que cuando hacemos un trabajo de innovación, la empresa se lleva los créditos, ésta puede vender más o ahorrar dinero y tiempo con el sudor de tu trabajo. Sin embargo, siempre considera que la persona que lleva a cabo uno de estos proyectos y los mismos equipos afectados son los verdaderos beneficiados.

  • El innovador

El innovador ya está aprendiendo solamente por pensar fuera de la caja, se enfrenta a los problemas con otra mirada y busca soluciones que por diferentes motivos no se han podido resolver o ni siquiera pensar. Se puede enfrentar a una nueva tecnología que implica aprender y aplicar nuevos conocimientos, generan nuevos procesos e incluso formas de automatizar las tareas.

Además estas personas salen de su rutina, mantienen la motivación en su trabajo y pueden contagiar a sus compañeros.

  • El equipo innovador

El equipo se beneficia utilizando los resultados de los nuevos proyectos que pueden agilizar la velocidad del desarrollo, mejorar la calidad y también facilitar su trabajo diario. Incluso pueden hacer que el trabajo sea más divertido.

Cuando se trabaja en equipo, los proyectos novedosos se fortalecen aumentando las probabilidades de éxito, se llega más lejos en equipo.

No pares de proponer


Aunque los proyectos de innovación vengan desde iniciativas propias y consumen tu tiempo libre, no dudes en los beneficios que conllevan. En el peor de los casos aprendes y profundizas sobre alguna tecnología, conoces mejor a tu equipo y obtienes nuevas ideas para los trabajos futuros que te asignarán, dentro de la misma o en tu siguiente empresa.

Una de las mayores satisfacciones que podemos tener en un trabajo, es que una idea propia se implemente y vaya tomando valor dentro de la organización.

Monday, August 21, 2017

Mentoring y la nivelación de conocimientos

Es común ver en las empresas la fuga de conocimiento, la rotación de personal ha sido la regla en estos tiempo y seguramente tú no quieres permanecer haciendo lo mismo durante toda tu vida porque no tienes a nadie más que te reemplace. También es posible ver cómo dos personas hacen el mismo trabajo con diferente calidad, tardando mucho más la que lo hace más lento.

Minimizando las diferencias


Los niños tienen a sus padres que les sirven como ejemplos a seguir, los estudiantes tienen a su profesor que se dedica a enseñarles, los deportistas tienen a su entrenador. En casi todas las áreas donde nos desenvolvemos tenemos a una persona que nos puede guiar, aconsejar y ayudar, el mundo laboral no se encuentra ajeno a ésta dinámica y estas personas, los mentores, tienen un rol fundamental no sólo para las siguientes generaciones porque todos tenemos que ser mentor y tutelado a la vez.

¿Por qué ser un mentor?

Más allá de nombrar las características que deben tener los mentores, mi objetivo es dejar claro que los mentores son imprescindibles para el desarrollo de una empresa, una carrera profesional, familiar, etc. Un país puede mejorar teniendo una población educada, con sentido de justicia, con memoria, y otras características que pueden ser motivadas, guiadas e impulsadas por un mentor para mejorar a la sociedad.

Por otro lado, durante un proceso de Mentoring, tanto el mentor (o guía) como el mentee (o tutelado) aprenden de la experiencia. Siempre hay cosas que aprender del otro y eso es fundamental durante un Mentoring. No se trata de tener a un maestro que lo sabe todo y a un aprendiz que escucha atento y sólo hace lo que le dicen.

Mentor en el mundo laboral
Durante mi experiencia como mentor, he tenido que ayudar a formar profesionales desde que eran estudiantes. Particularmente, mis mentees tenían que desarrollar habilidades de autoconocimiento que los ayude a enfrentar una entrevista laboral y además fortalecerlos para que tengan un buen desempeño laboral.

La red de contactos también se amplia durante el proceso de mentoring. Ambos, el mentor y el tutelado, conocen a nuevas personas que pueden jugar un rol en el futuro laboral para cualquiera de los dos.

El mentor entrega feedback en base a su experiencia. Esta persona ya ha pasado por varios problemas y cometido muchos errores, los mentores pueden hacer suyo todo eso aprendiendo de ellos mediante ejercicios, lecturas o cualquier otro medio que el mentor estime conveniente..

¿Por qué implementarlo en una organización?

Cualquiera sea el lugar donde se reúna un grupo de personas con un objetivo común, siempre hay cabida para un mentoring. El proceso puede darse formalmente mediante una decisión de la organización o informalmente pidiendo ayuda a un mentor para que dedique tiempo y comparta su experiencia.

Una empresa puede beneficiarse nivelando el conocimiento. El mentor que sabe mucho del negocio puede guiar a alguien más para dejar de ser imprescindible, y a la vez tener la posibilidad de tomar nuevos roles. El mentor se motiva y quiere permanecer en una compañía dónde puede aprender y desarrollarse junto a sus pares.

La calidad y velocidad con que se hace un trabajo va a mejorar, desde trabajos manuales hasta decisiones estratégicas que son realizadas por personas que tuvieron mentores dedicados a transmitir su conocimiento sobre errores que tuvieron en el pasado.

Compromiso

El compromiso para la relación mentoring es clave para su éxito, entendiéndolo como la adquisición de habilidades tanto técnicas y blandas que necesite el mentee. No hay formas establecidas para hacerlo ni balas de plata, las recomendaciones siempre son bienvenidas en estos casos.

Si te toca ser mentee, cumple con tu rol y saca provecho de esa persona con experiencia en esa área que es tan importante para ti, también no dudes en cuestionar a tu mentor con respeto. Si eres un mentor, considera que tendrás que dedicar tiempo para proveer herramientas útiles y efectivas al mentee y recuerda siempre, “Si te vas  a comprometer en una relación de mentoring, hazlo bien”.

Corre ya, y decídete por un plan de mentoring

Mediante un proceso de mentoring, una organización puede disminuir la fuga de conocimiento, los índices de rotación tienden a la baja y siempre se podrá contar con un sucesor que tome tu lugar para poder dejar tu empresa tranquilamente o moverte a un nuevo equipo obteniendo ese rol que tanto buscabas.

Wednesday, August 16, 2017

Errores en el trabajo: supercoders solitarios

Entre los errores que he cometido laboralmente, hay uno en particular que veo muy seguido en mis compañeros y yo también lo he cometido groseramente. Generalmente ocurre cuando estamos trabajando en productos nuevos donde las posibilidad de implementaciones son muy variadas y la solución está muy abierta.

Superman o supercoder

Y es así como de a poco me fui emocionando con las formas en las que podía realizar mi implementación, aplicando patrones de diseño, buenas prácticas de codificación, entregando una solución a tiempo, y además preparando el proyecto para las futuras mejoras que posiblemente teníamos que agregar en el mediano plazo.

Todo parecía muy tranquilo, mis compañeros de equipo estaban preocupados en otras partes del proyecto y por fin podía trabajar en algo desde el comienzo. Resolver defectos y agregar pequeñas funcionalidades parecían cosas del pasado. Uno se siente poderoso dibujando cajitas y sus interacciones, mi cerebro parecía trabajar a niveles inexplorados y ya no necesita ayuda de mis compañeros.

¿Quién vigila a los super programadores?

Me encontraba listo para entregar una solución que cumpliera con todos los criterios de calidad, velocidad, tiempo de desarrollo y más.¿Qué podría salir mal? ¿Que cosas estaba dejando de lado? ¿Cuales fueron los errores que cometí en esa solución a la que le dedique muchas horas de mi vida?

Primero dejar en claro que el código y los proyectos no son de una sóla persona, todo lo entregado es del equipo y del cliente. Primero del equipo porque éste tendrá que mantener y hacer nuevas implementaciones sobre el código. Qué tan difícil o fácil sea modificar un proyecto tiene directa relación en cómo el equipo se distribuyó y de las decisiones que tomó. El cliente, por otro lado, es quién utiliza el sistema y conoce cómo producir el dinero, también es quién paga para que los desarrolladores hagan su trabajo. Todos ellos son los vigilantes, interesados y tienen el deber de corregir lo que se está haciendo, en otros casos pedir retroalimentación del producto y entregarla según las responsabilidades que tengan.

A continuación describo algunas observaciones durante este tipo de situaciones:

No revisar ni consultar sobre la implementación


El desarrollador estrella no puede encaminarse sin preguntar a sus compañeros para resolver un problema difícil. Una persona no puede, a menos que sea muy experimentado y le sea muy común entenderse con ese tipo de problemas, diseñar e implementar la solución de forma solitaria. Si lo hiciera asì ¿Para qué existe un equipo?

Nadie más puede entender o quiere entender lo implementado

En muchos casos, y lo menciono porque confío mucho en esas mentes, el desarrollador puede llegar a una muy buena solución para un problema difícil por sí sólo. Sin embargo, las otras mentes también tienen su orgullo y quieren participar de este tipo de soluciones. Si ellos no pueden obtener el contexto de la solución ni ayudar, entonces se hace cada vez más complicado explicarles una solución porque saben poco de la problemática y todo les parece muy enredado, tampoco fueron parte de èsta.

Lo peor, el código será modificado en el futuro y se produce una desmotivación en el equipo


Naturalmente, el equipo se va a ir alejando de esas piezas de código que desconocen. Sienten que es algo que no les pertenece, no entienden y sòlo el super programador que lo creó puede modificarlo.
El resto del equipo no tiene ganas de trabajar en esa parte del proyecto y en casos más extremos, tampoco trabajar con ese superman en la programación.

Confiar y cuidarnos de nosotros mísmos


El futuro no es prometedor en casos como éstos, las mejoras en esos proyectos no son bien recibidas y en muchos casos se termina refactorizando gran parte del código traduciéndose en horas perdidas. Atentos en identificar cuándo nos estamos comportando de esa forma tanto en la programación como en otros tipos de trabajos.

Tuesday, July 18, 2017

Cine a la casa

Cuando el cine llegó a nuestras vidas, nos dimos cuenta que para vivir una experiencia completa, debíamos dirigirnos a las salas y ver películas en pantallas de gran tamaño y cada vez con mayor definición.

No pretendo ser un visionario, pero siempre me ha llamado la atención la realidad virtual y cómo se podría integrar con otros servicios como el cine.

Participación

Podríamos ser parte de la película tomando decisiones y dirigiendo nuestra vista donde más nos interese. Podríamos vernos tomando un arma mientras apoyamos al protagonista a avanzar en una pelicula de guerra, también podríamos observar lo que hacen otros personajes mientras hay una conversación importante de otros actores.

La experiencia sería mucho más amplia y tendríamos que ver la película varias veces para encontrar los detalles.

¿Hasta donde llegar?

Algunas  preguntas a responder son: ¿En qué se diferenciaría a un videojuego? ¿Los personajes pueden reaccionar a acciones tomadas por los espectadores? ¿Los actores serán personas reales? ¿Cuánta tecnología nos falta para llegar a algo concreto?

Los límites de ese tipo de experiencias están siendo explorados y ya tenemos algunas peliculas donde el espectador puede explorar el escenario como en la película chilena llamada Constitución. No está demás mencionar que ésto no se limita al cine, videojuegos, conferencias e incluso recitales.

Obviamente todo eso tiene que estar conectado con el factor más importante para llevar a cabo proyectos ambiciosos con más características y es un camino que está en progreso.

Cine en la casa

Es posible que ya no sea necesario asistir a una sala de cine para vivir ese tipo de experiencias y el transcurso de la película dependa de algunas decisiones tomadas, incluyendo su final. Nos bastaría con poseer un lente de realidad virtual, acomodarnos en nuestros sillones y disfrutar.





Monday, June 26, 2017

Big Data - Necesidades y roles para su uso


Cuando analizamos un conjunto de datos que representa, por ejemplo al número de niños que se mueren de neumonitis, es posible tener una idea básica de las características que cumplían esos pequeños sólo mirando los datos. Cuando analizamos una cantidad más grande de información, podemos usar Mainframes u otras computadoras para analizar esa data y obtener las características más relevantes. Sin embargo, nuestros datos no suelen ser grandes y no podemos realizar predicciones con la precisión necesaria como para poder tomar una decisión fiable.

¿Qué ocurre si analizamos a los niños que viven y a los que se mueren de neumonitis sobre los datos obtenidos para todo un país? No queda más que resignarse y entender que el procesamiento de consultas sencillas de ese tipo pueden tardar horas y hasta un par de días, y el descubrimiento de sus características relevantes puede tardar fácilmente meses o años. ¿La tecnología actual puede soportar enormes volúmenes de datos?

Big Data


Big Data se puede definir como el almacenamiento de una gran cantidad de datos y tener la capacidad de procesarlos rápidamente. El procesamiento sobre los datos puede usar técnicas de Machine Learning y así obtener las mejores características según el propósito de las búsquedas. Es importante notar que no hay límites sobre las formas que hay para encontrar la información relevante, pero el tiempo de procesamiento no ha sido el esperado. Cuando hablamos de Big Data, la cantidad  de datos a analizar es brutalmente enorme y el tiempo del análisis disminuye a minutos usando principalmente técnicas de distribución de procesamiento.

El analista


Al momento de tocar los datos, el analista es quién hace la magia. Ellos tienen un conjunto de métodos estadísticos para obtener lo que necesitan, pero el descubrimiento toma tiempo y a medida que aumenta la cantidad de datos a usar, ese tiempo crece exponencialmente. Las técnicas a aplicar dependen de la calidad de la información obtenida, de su tipo y de su propósito. Muchas veces se trata de realizar pruebas y cometer muchos errores antes de llegar a buenos resultados.

En muchos casos, los analistas deben estar familiarizados con algún lenguaje de programación y saber realizar consultas a la base de datos, por ejemplo SQL. Así que nos encontramos con una gran limitación sobre quién puede acceder y analizar los datos debido a los requisitos que deben cumplir.

¿Qué podemos hacer cuando cada análisis de prueba toma horas y no hay límites sobre la cantidad de errores a cometer antes de llegar a un resultado aceptable? Sin duda, los analistas pueden volverse viejos antes de llegar a resultados satisfactorios, necesitan de la ayuda de alguien más.

El desarrollador


El analista se apoya de desarrolladores con conocimientos Big Data. Éstos solucionan un gran problema de los analistas o usuarios de grandes volúmenes de  datos, disminuyendo tareas computarizadas que tomaban horas o días, llegando a sólo unos cuantos minutos usando la magia de la distribución de los procesamientos en muchas computadoras.

Entre las características de un desarrollador de Big Data, nos podemos encontrar con personas que deben ser unos apasionados con las tecnologías porque ese mundo se encuentra en constante evolución, usar las mejores tecnologías y técnicas son fundamentales para estar en la cima de la industria.

Por otro lado, la comunidad de desarrolladores está constantemente entregando nuevas actualizaciones o productos (Apache Hadoop, Hive, Spark, etc.) que van a resolver problemas actuales y es frecuente que se enfrenten a problemas donde no hay una solución lista para usar, ellos están recorriendo un camino que no tiene tantos años y tienen mucho por descubrir y desarrollar todavía.

Beneficios


Entre los beneficios que nos trajo el uso de tecnologías Big Data, nos encontramos con las siguientes:
  • Los procesos que antes tomaban horas o días, ahora pueden llegar a unos cuantos minutos. Por ende, los usuarios, analistas, o cualquier persona que necesite resultados sobre una gran base de datos, harán mejor uso de su tiempo.
  • Los resultados sobre una gran cantidad de datos es más precisa y se puede llegar a mejores conclusiones. Incluso, es más fácil saber su comportamiento futuro.
  • Las empresas privadas y estatales pueden tomar mejores decisiones sobre la industria en las que se encuentran o pueden enfocarse en las personas que realmente necesitan y quieren un producto. Cualquier organización que necesite encontrarse en la vanguardia debe aplicar este tipo de técnicas para encontrarse pasos adelantada.
  • Los gobiernos pueden distribuir mejor sus ingresos, impactando y mejorando la calidad de vida de su población.

Lo que viene


Mas allá de hablar del futuro del Big Data, ya vemos que las más grandes compañías hacen uso de sus capacidades y rápidamente se están uniendo otras que encuentran imprescindible utilizar esos conocimientos.

Rápidamente han ido apareciendo nuevas tecnologías para diversos tipo de datos, arquitecturas que hacen el procesamiento más rápido o que sea más fácil de utilizar. Papers con técnicas de minería de datos y actualizaciones que hacen más fácil las implementaciones de esas técnicas.

La velocidad del procesamiento depende mucho de la infraestructura y la cantidad de computadores donde se distribuyen los procesamiento de datos, pero todavía nos hace falta encontrar nuevas técnicas de análisis con algoritmos que exploten el potencial que tiene el Big Data.