Sei sulla pagina 1di 7

INTRODUCCIN ETL CON TALEND

OPEN STUDIO FOR BIG DATA


Un proceso ETL (Extraccin, transformacin y Carga) es aquel que permite la extraccin masiva de
datos de distintas fuentes, procesarlos, su transformacin y finalmente carga en un destino que pueden
ser ficheros, una base de datos u otros.

Por tanto en este tipo de procesos, la carga de trabajo mas costosa (en cpu y memoria) se realiza fuera del
origen de los datos, aliviando de carga a las fuentes.
En un proceso ETL terico, los datos se extraen en bruto de las fuentes; todo el procesamiento como
dar formatos a los campos, traducciones, generacin de datos (secuencias), agregacin de estos y
validacin y verificacin de la calidad del dato se podra hacer en la fase de transformacin. Con ello se
minimiza el impacto sobre las fuentes y los sistemas de destino de la informacin.

En la realidad, los procesos que podemos encontrar son de tipo mixto ETL con ELT .

La herramienta Talend Open Studio for Big Data est basada en el entorno de programacin java llamado
Eclipse.

Bloque 1: en este bloque se muestran los distintos jobs y elementos que contiene nuestro repositorio.

Bloque 2: en este bloque se muestran por pestaas los jobs que tengamos abiertos para editar.

Bloque 3: en este bloque se muestran las pestaas de variables de contexto del job, una pestaa de
configuracin para el componente que tengamos seleccionado dentro del job, una pestaa para hacer
ejecuciones del job y otras.

Bloque 4: en este bloque se muestra la lista de componentes que tenemos disponibles para agregar a
nuestros jobs; dichos componentes estn agrupados por categoras.

En un job tendremos principalmente componentes de tres tipos:

Componentes de entrada (Input): se puede obtener la informacin de fichero, una base de datos e
incluso internet.

Componentes de transformacin de datos.

Componentes de salida (Output): como para los de entrada, los componentes de salida pueden volcar la
informacin sobre ficheros, bases de datos u otros.
Existen otros tipos de componentes, como aquellos que permiten realizar operaciones de sistema
operativo o por FTP, pero principalmente se usarn componentes de los tres tipos anteriores.

Ejemplo: un flujo bsico

En este flujo que mostramos de ejemplo se tienen dos entradas: una de un fichero delimitado (un .csv) y
una consulta oracle. El componente tMap se encarga de hacer join complejos entre los datos y permite
varias salidas que generan flujos paralelos (se realizan procesamientos en paralelo, no como en un
procedimiento almacenado Oracle en el que el procesamiento es en serie). En uno de los flujos se hace un
filtro de filas segn una cierta condicin y en el otro se realiza una agregacin de datos y a continuacin
una sustitucion de caracteres. Finalmente se vuelca informacin de salida a un fichero posicional y a una
tabla Oracle.

Dentro de un job, como la herramienta est basada en Java se usan los tipos de campo de dicho lenguaje.

Componentes mas usados:


Vamos a continuacin a describir los componentes que se usan con mayor frecuencia (aunque hay
muchos otros, estos son los que he usado yo habitualmente):

Componentes de Input (entrada al flujo)


Componente

Descripcin

tFileInputDelimited

Permite la insercin de datos desde un fichero delimitado (tipo csv).

tOracleInput

tFileInputFullRow

Permite la insercin de datos desde una base de datos Oracle a travs


de una consulta.

Toma un fichero plano y vuelca cada fila del fichero en un nico


campo.

Componentes de Output (salida del flujo)


Componente

Descripcin

tFileOutputPositional

Permite el volcado de datos a un fichero posicional

tOracleOutput

Permite el volcado a una tabla de base de datos Oracle.

tFileOutputDelimited

Permite el volcado de datos a un fichero delimitado.

Permite el encolumnado de valores de una columna segn valores


tPivotToColumns

de otra. No es recomendable su uso pues existen otras maneras de


realizar esta tarea de manera mas ptima.

Los componentes de output tienen multitud de opciones que permiten por ejemplo:

Sobreescribir el fichero destino o continuar escribiendo tras la ltima lnea existente.

Incluir o no lnea o lineas de cabecera.

Comprimir fichero de salida.

Truncar la tabla destino o hacer borrados selectivos de los datos previos.

Estos componentes pueden ser usados como componentes intermedios en un flujo de manera que este
pueda continuar.

Componentes de procesamiento de datos


Componente

tFilterRow

Descripcin

Permite el filtrado de filas segn condiciones estticas. Se pueden


extraer tanto las filas filtradas como las rechazadas.

tConvertType

Permite convertir tipos de datos de las columnas y especificar formatos.

tFilterColumns

Permite filtrar columnas.

tJavaRow

Permite introducir lgica en cdigo java para el tratamiento de los datos.

tReplace

Permite hacer reemplazo de valores segn condiciones.

tSortRow

Permite ordenar las filas segn condiciones.

tSetGlobalVar

Permite establecer valores para variables globales a partir de datos de


entrada (implicitos) o especificados explcitamente.

Componente

tJoin

Descripcin

Permite realizar join sencillas de datos para dos entradas segn


condiciones. Devuelve tanto datos cruzados como rechazados.

Permite realizar join complejas y otras acciones sobre datos de mltiples


entradas. Asimismo permite tener mltiples salidas lo que nos
tMap

proporciona una manera de paralelizar flujos.

Es uno de los componentes mas potentes de la herramienta.

Permite ejecutar cdigo almacenado PL/SQL en bases de datos oracle


tOracleSP

(procedimientos y funciones). Este componente permite realizar flujos


mixtos ETL/ELT. Se puede usar como Input, Output y procesamiento.

tOracleCommit

tAggregateRow

Permite realizar commit para una conexin abierta que se est usando
por componentes oracle.
Permite el clculo de valores agregados (sumas, max, avg,..)
especificando una agrupacin (similar a group by en SQL).

Varios flujos dentro de un mismo job


La herramienta permite tener varios flujos de datos conectados ordenadamente que se van ejecutando
segn condiciones sobre los flujos o componentes ejecutados previamente.

El inicio de ejecucin de los flujos se configura a travs de triggers que enlazan los flujos o componentes:

Por ejemplo, podemos conectar dos flujos A y B para que B se ejecute si el flujo A ha finalizado
correctamente (On Subjob Ok).

Podemos conectar flujos padres-hijos con una relacin 1-N (1 padre, varios hijos), lo que nos permite
paralelizar flujos (ejecuciones simultneas).

Hay componentes como tPivotToColumns que obligan a finalizar un flujo para poder usar los datos
procesados. En este caso se puede crear otro flujo tomando el fichero de salida de tPivotToColumns como
fichero de entrada para continuar el procesamiento.

Todo flujo que no est conectado con otro del job se ejecutar al comienzo de la ejecucin del job.

Variables de contexto.
Se pueden especificar variables de contexto de igual manera a como se tratan en un proyecto java.

Estas variables se pueden incluir en un fichero de contexto java o bien cargarlas de ficheros de entrada
usando los componentes:

Componente

Descripcin

Carga valores de variables de contexto desde una entrada con los campos:

Key: nombre de la variable de contexto

Value: valor de la variable de contexto

tContextLoad

Se cargarn aquellas variables de contexto que estn creadas previamente.

tJavaRow

Usando este componente se pueden cargar los valores de variables de


contexto usando condiciones sobre los datos de entrada.

Como ejecutar Jobs


La herramienta Talend Open Studio for Big Data permite:

Ejecutar los jobs desde la herramienta de desarrollo.

Exportar el job, creandose un fichero java .jar junto con un .bat (y un .sh para linux) ejecutable que
permite ejecutar el job . De esta manera podemos ejecutar los jobs en cualquier ordenador (PC o no,
porque es java) siempre que se tenga la estructura de carpetas configurada en el job y haya acceso a los
ficheros y BD usadas.

Ejecucin desde la herramienta de desarrollo:


En el bloque3 (ver carptura de pantalla al principio del documento) hay una pestaa Run que permite la
ejecucin del job. Dicha ejecucin se puede hacer con Debug o no. En la misma ventana podemos ver las
trazas insertadas y el log de la ejecucin.

En una ejecucin desde la herramienta se muestran en la ventana del Bloque2 el nmero de filas
procesadas, el tiempo total de trabajo de cada componente, si el flujo ha terminado o est en espera, etc.

Si todo ha ido bien debe aparecer un mensaje final de [exit code=0]

Dentro del job podemos incluir trazas y aadir informacin a este log de ejecucin.

Asimismo se puede realizar un control de excepciones para capturar errores.

En los jobs que he creado he incluido el siguiente flujo para capturar posibles errores java:

Potrebbero piacerti anche