sábado, 28 de marzo de 2009

Primeras experiencias con Talend Open Studio

Desde hace bastante tiempo -en años se mide- sigo, aunque de forma muy desigual e inconstante, una serie de líneas/modas de pensamiento/tecnológicas dentro de mi profesión que me atraen mucho, pero que por mi naturaleza de tendencia holgazana, constantemente las dejo de lado, o apenas leo algo sobre ellas de vez en cuando.

Uno de esos temas sobre los que de vez en cuando vuelvo a retomar durante unos días, y luego vuelvo a abandonar, como la novia en otro puerto a la que visito una vez cada muchos meses, es el de la inteligencia empresarial (o business intelligence, que dicen los angloparlantes). En particular siempre me llamó la atención, dentro de la BI, la minería de datos (data mining) usando técnicas de inteligencia artificial. Pero ya lo he dicho antes: soy muy ganso y me conformo con leer de vez en cuando sobre el tema, en lugar de practicar. Vamos, como el que le gusta leer sobre fútbol, o verlo en la tele, pero luego no lo practica. Espera, coño, que sí que hay varios millones de pobladores en el país que hacen precisamente eso...

He tenido suerte y en la empresa que trabajo me pidieron un prototipo en el que ofreciera una serie de gráficas (¿recuerdan la entrada en la que mencionaba el asunto de las gráficas?). En la primera ocasión, por cuestiones del directo y aprovechar inversiones previas, todo se hizo de forma programática. Pero esta vez lo quise enforcar por una línea distinta. No quería caer en la tentación de andar programando. ¿Les había dicho alguna vez que soy un buen programador, por mucho que le pese a los envidiosos y a mis enemigos? Lo soy porque mi código es de calidad. Tiene que ver con cómo sientes el código... Pero no es de eso de lo que quería hablar. Sigo. Teniendo en cuenta que quería resolverlo sin programar, me puse a buscar en el mundo open source, que para el español medio es sinónimo de gratis, herramientas ETL (extraer, transformar y cargar -load-). Programar es un placer, difícil de entender si no lo has hecho de verdad, pero incrementa el coste total de propiedad de los sistemas de información. No necesariamente programando se es menos productivo, no se confunda usted. Simplemente digo que usando este tipo de herramientas, en concreto las ETL, se reduce el coste de propiedad. Pero eso lo defenderé en otra ocasión.

Buscando y rebuscando di con Talend y Kettle. Como tenía que decantarme por uno para empezar a montar contrarreloj las pruebas, elegí la primera de las dos. Más adelante le meteré mano a la segunda. Fue una sorpresa, añadida, encontrar que se podía usar en Mac (y en Linux). Así que después de juguetear en la empresa durante unos días con la versión para Windows, decidí instalarla en casa para intentar profundizar algo más con ella. Independientemente de lo que ocurra a partir del prototipo montado, sí que me gustaría seguir mejorando mi conocimiento sobre ella.

Instalación en Mac

El primer sobresalto me lo llevé cuando, nada más copiado el directorio (en Mac la mayoría de las aplicaciones se instalan copiando el archivo o carpeta dentro de la carpeta de aplicaciones), comprobé que el doble clic sobre el icono de la aplicación provocaba un mensaje del tipo "no compatible con la versión actual". ¿Cómo? Comprobé varias veces más que había descargado la última (calentita, calentita) versión sobre la que están trabajando ahora: 3.1.0 M3 (beta).

Afortunadamente no me costó mucho dar con la respuesta en el foro de la comunidad de Talend y que se resume en:

a) activar el bit de ejecución (chmod +x ...) del ejecutable

b) mostrar el contenido del paquete (ofrecido en el menú contextual sobre el icono de la aplicación), y

c) editar el archivo info.plist para cambiar el nombre del ejecutable (que por defecto está como 'eclipse') por el de Talend.

Después de eso, doble clic (o Spotlight) y aparecerá la ventana de arranque normal, junto al insistente diálogo de registro.


Principio filosófico-funcional, o... ¿cómo va esto?

Talend Open Studio es otro proyecto más que se basa en el aceptadísimo IDE de código abierto Eclipse. Pero para empezar a usar el IDE debes crear un proyecto nuevo.


Tras rellenar los campos necesarios, y decidir si quieres que sea un proyecto Java o uno basado en Perl, genera código para los dos lenguajes, se abrirá el IDE, propiamente dicho, con la ventana de trabajo dividida en diferentes zonas o áreas.

Aunque es mucho más que un editor de procesos -esta entrada no intenta hacer un repaso exhaustivo de la herramienta- se dirá que, en modo muy -muchísimo- resumido, la esencia del proceso de construcción es usar el panel de edición de jobs a modo de pizarra donde se irán arrastrando y soltando los diferentes componentes que provee la herramienta, uniéndolos de forma que se cree un flujo de trabajo (workflow) entre ellos. Cada componente representará un estado y una tarea del proceso y, como si de una caja negra se tratara, se encargará de realizar una serie de transformaciones sobre los datos de entrada para generar unos datos de salida. Las estructuras de datos de entrada y salida vienen a denominarse esquemas.


En su versión actual, Talend Open Studio ofrece una surtida cantidad de componentes dedicados a recoger, almacenar y procesar los datos de formas diversas. Todos ellos están clasificados por áreas en la paleta de componentes que, de forma general y preestablecida, aparece a la derecha en el IDE. Aunque, por si los que ya vienen de serie pudieran ser pocos, se pueden obtener más acudiendo al ecosistema de Talend. O los puedes fabricar tú, si tienes dotes de programador.


Por último, y dado que el simple hecho de soltar un componente en el panel de edición no es suficiente (la inteligencia de la herramienta no llega hasta el punto de adivinar qué demonios quieres hacer exactamente), hay que configurar la etapa o tarea. Cada componente tendrá sus parámetros de configuración. En la siguiente imagen se muestra el caso del componente tFilterRow, que en el ejemplo que preparaba para este artículo, se encargaba de filtrar los artículos resultantes de una importación desde el canal RSS cogiendo únicamente los que tenían entre doscientas y cuatrocientas palabras.


Asegurándose que el primer paso es (o los primeros pasos son) elementos que leen datos de sus fuentes, y que los de finalización se corresponden con salidas, configurando adecuadamente los estados intermedios, se tiene el proceso o trabajo deseado.

Ya dije que iba a ser muy resumido. Hay mucho más. Cosas como los metadatos, los contextos, que el código generado puede ser invocado como un servicio web o como un proceso de sistema para incluirlo dentro de la programación del cron, etc., etc. Sin olvidarnos que, si lo que te gusta es programar, siempre podrás hacer uso de los componentes de programación (tJava, tJavaRow, etc., etc.) que te permitirán hacer cosas más allá de los límites de la imaginación.

Documentación y curva de aprendizaje

Reconozco que con el open source sufro de prejuicios -tal vez infundados- sobre la documentación disponible. Por lo general creo que la documentación es, como lo es al final en todos los proyectos, sean estos o no lo sean de código abierto, la gran maldita y descuidada. Ese sentimiento no desapareció cuando intenté dar mis primeros pasos usando únicamente la guía de usuario, algo pobre, y apoyándome en la guía de los componentes, algo incompleta. Mis primeras horas resultaron muy frustrantes. No terminaba de ver sentido a ciertas relaciones y las formas en que se usaban ciertas propiedades en las iteraciones, por ejemplo.

Ese sabor de mal documentado duró hasta adentrarme en la web de la comunidad, donde hay unos cuantos tutoriales que pueden ayudar mucho a reducir la curva de aprendizaje. Aunque no todos los componentes están tan bien documentados -al menos en lo que he tratado de buscar yo- como el tMap, el componente estrella de Talend, y para hacer algunas cosillas sudé tinta china buceando en las profundidades más abisales de Internet.

Pero lo cierto es que, con lo que encontré en Internet, en tres días, tenía montado un prototipo que ha estado funcionando durante una semana, con cinco tareas no demasiado complejas, hay que confesarlo. Ahora bien, sinceramente creo que para tener la soltura suficiente para considerarte un 'experto' en el entorno, hacen falta no menos de tres semanas. Tal vez más. Hay muchísimas cosas (y componentes) que no resultan triviales y que te obligan a buscar y rebuscar en el foro para intentar encontrar una solución, de encontrarla, o una explicación. Por ejemplo, estuve una hora intentando conseguir que una bifurcación de datos se pudiese volver a unir. Tuve que aceptar, tras leerlo en el foro, que eso, simplemente, no se podía hacer.

Apunte final

En el primer borrador de este post había preparado un ejemplo haciendo uso del componente tRSSInput enganchándolo al blog del amigo Adastra. De los diez artículos que devuelve el componente, la mitad, o sea cinco, tenían entre doscientas y cuatrocientas palabras. La idea era meterme un poco con su capacidad de generar texto: si lo conectases a un ordenador serviría para probar el ancho de banda de la red. Pero acabó siendo un proceso poco elaborado, resultando poco útil como ejemplo o para realizar un repaso de los detalles más destacables. Tampoco era posible usar uno de los procesos desarrollados para el prototipo de la empresa. La alternativa era desarrollar un ejemplo sintético desde cero. Como que no. En cualquier caso, aunque no haya explicado cómo hice el proceso, queda, sin embargo, para la posteridad en la captura.

1 comentario:

skate_ViDa dijo...

muchas gracias por la info y la parte de exponer como servicio web me parece genial voy adentrarme ahora aprender sobre talend
Saludos