KETTLE
Profesora: Elizabeth León Grupo de Investigación MIDAS
Bases de Datos Avanzadas Ingeniería de Sistemas y Computación
Universidad Nacional de Colombia [email protected]
1. PENTAHODATAINTEGRATION(KETTLE)
PEntaho Data Integration (PDI, también conocido como Kettle) es el componente de Pentaho responsable del proceso de Extracción, Transformación y Carga (ETL) de datos. Aunque las herramientas de ETL son más usadas en entornos de Bodegas de Datos, PDI puede usarse además para otros propósitos:
• Migrar datos entre aplicaciones y bases de datos.
• Exportar datos desde una base de datos a archivos planos.
• Cargar datos de forma masiva en bases de datos.
• Limpieza de Datos.
• Integración de aplicaciones.
PDI es de un fácil manejo. Cada proceso es creado con un herramienta gráfica donde se especifíca qué hacer y cómo hacerlo. Puede usarse como una aplicación independiente o puede ser usada en conjunto con los demás componentes de la Suite de Pentaho.
Como una herramienta ETL, es la herramienta open source disponible más popular. PDI soporta varios formatos de entrada y salida, incluyendo archivos de texto, hojas de datos y mototres de bases de datos comerciales y libres.
2. COMPONENTES DEPDI
Pentaho Data Integration está formado por los siguientes componentes primarios:
• Spoon: Es una aplicación de escritorio que utiliza una interfaz gráfica y un editor para diseñar transformaciones y trabajos. Spoon provee las herramientas para crear complejos trabajos ETL sin necesidad de leer o escribir código. Las transformaciones y trabajos diseñados con Spoon se pueden ejecutar con la herramientas de Kettle, Pan y Kitchen.
• Pan: Es un motor de transformación de datos que realiza muchas funciones tales como lectura, manipulación y escritura de datos hacia y desde varias fuentes de datos.
• Kitchen: Es un programa que ejecuta los trabajos dis- eñados por Spoon en XML o en un catálogo de bases de datos.
• Carte: Carte es un servidor web sencillo que permite ejecutar transformaciones y trabajo remotamente. Lo hace aceptando XML (mediante un pequeño servlet) que con- tiene la transformación a ejecutar y la configuración de ejecución.
3 INSTALACIÓN
En la página http://kettle.pentaho.com/ puede encontrarse disponible la última verión (4.4.0) de Kettle. Kettle requiere el Java Runtime Environment (JRE) versión 1.5 o más reciente.
Se puede obtener de http://java.sun.com/.
PDI no requiere instalación. Simplemente se descomprime el archivo descargado de la página en una ubicación seleccionada. Dentro se encuentran todos los componentes mencionados anteriormente.
4. SPOON
Spoon es la herramienta gráfica con la cual se diseñan y prueban todos los procesos de PDI. Los demás componentes de PDI ejecutan los procesos diseñados en Spoon, y son ejecutados desde una terminal.
4.1 Repositorios y archivos
En Spoon se construyen trabajos y transformaciones. PDI ofrece dos medios para salvarlos:
• Repositorio en una base de datos.
• Archivos.
Si se selecciona la opción del repositorio, el repositorio tiene que ser creado desde el primer momento en que se corre Spoon. Si se selecciona la opción de archivos, los trabajos son salvados en archivos con extensión kjb, y las transformaciones en archivos con extensión ktr. En la presente guía se trabajará con el segundo método (archivos).
4.2 Iniciando Spoon
Spoon se inicia al ejecutar el archivo spoon.bat en Windows, o spoon.sh en sistemas operativos Unix. Cuando Spoon inicia, una ventana de diálogo pregunta por los datos de conección al repositorio. Oprimir el botón Cancel.
Spoon nos comparte ciertos tips a usar cada vez que lo abrimos. Se pueden consultar varios tips o simplemente cerrar ésta ventana y continuar con el trabajo.
4.3 Hola Mundo
A través de éste sencillo ejemplo se introducirán los siguientes conceptos y fundamentos de PDI:
• Trabajo con la herramienta Spoon.
• Transformaciones.
• Pasos (Steps) y Saltos (Hops).
• Variables predefinidas.
• Previsualización y ejecución desde Spoon.
• Ejecución de transformaciones desde una terminal con la herramienta Pan.
4.4 Problema
Se tiene un archivo CSV que contiene una lista de personas y se quiere crear un archivo XML que contenga un saludo para cada una de éstas. Si éste es el contenido del archivo CSV de entrada:
Figure 1. Contenido del archivo CSV
Éste sería el contenido del archivo XML de salida:
Figure 2. Contenido del archivo XML
La creación del archivo con los saludos, partiendo del archivo de texto plano, será el propósito de la primera transformación a realizar.
Un Transformación está hecha de Pasos unidos por Saltos.
Éstos Pasos y Saltos forman caminos a través de los cuales los datos fluyen.
4.5 Preparando el entorno
Antes de empezar con la transformación, es recomendable crear una carpeta con nombre Tutorial donde se salvarán
todos los archivos utilizados y generados. Crear luego un archivo CSV como el anteriormente mostrado y guardarlo como list.csv1.
4.6 La Transformación
El objetivo será alcanzado al cumplir tres subtareas:
• Crear la Transformación.
• Construir el esqueleto de la transformación usando Pasos y Saltos.
• Configurar los Pasos, especificando su comportamiento.
Para crear la transformación se debe:
• Ir a File, New , y luego seleccionar Transformation.
• En la pestaña View del Navegador, seleccionar la Trans- formación creada y dar click derecho, seleccionando Settings.
• Una ventana aparece, donde se pueden especificar las propiedades de la transformación. En éste caso solo escribir un nombre y la descripción. Dar click en Ok.
• Guardar la Transformación en la carpeta Tutorial, creada anteriormente, con el nombre hello. Se crea el archivo hello.ktr.
Lo siguiente es construir el esqueleto de la transformación usando Pasos y Saltos. Un Paso (Step) es la mínima unidad dentro de una transformación. Un conjunto variado y amplio de Pasos está disponible, agrupado en categorías como de Entrada o Salida, entre otros. Cada paso está diseñado para cumplir una función , tal como leer un parámetro o normalizar un conjunto de datos.
Un Salto (Hope) es la representación gráfica del flujo de los datos entre dos Pasos, con origen y destino. Los datos que fluyen a través del Salto constituyen los datos de salida del Paso de origen y los datos de entrada del Paso de destino.
Un Salto solo tiene un origen y un destino, pero varios Saltos pueden partir del mismo Paso. Cuando ésto ocurre, los datos de salida son copiados o distribuidos a cada destino.
Igualmente, más de un Salto puede alcanzar un Paso. En éstos casos el Paso debe tener la habilidad de poder mezclar la entrada para poder producir una salida.
La transformación a crear deberá realizar lo siguiente:
• Leer un archivo CSV.
• Construir los “saludos” para cada persona.
• Guardar los saludos en un archivo XML.
En este ejemplo, la correspondencia entre tareas y Pasos es de uno a uno porque la transformación es sencilla , pero no siempre es así.
1Información sobre la creación de archivos CSV - http://www.computerhope.com/issues/ch001356.htm
Así es como se empieza con una Transformación:
• A la izquierda del área de trabajo se encuentra la pestaña Design en el navegador. Seleccionar la categoría Input.
• Arrastrar la opción de CSV file input a la derecha, en el área de trabajo.
• Seleccionar la categoría de Scripting.
• Arrastrar la opción de Modified JavaScript Value al área de trabajo.
• Seleccionar la categoría Output.
• Arrastrar la opción de XML Output al área de trabajo.
Figure 3. Pasos Creados
Ahora se deben vincular el Paso del CSV file input y el de Modified JavaScript Value a través de un Salto:
• Seleccionar el primer Paso.
• Mantener oprimida la tecla Shift y arrastrar el ícono del primer Paso sobre el ícono del segundo Paso.
• Vincular el Paso 2 y Paso 3 con el mismo procedimiento.
Es hora de Especificar el comportamiento que tendrá cada uno de los pasos. Cada uno de estos, tiene una ventana de configuración. Éstas ventanas varían de acuerdo a la función del Paso y la categoría a la que pertenece.
Entre las características del paso estan el nombre, el cuál representa al Paso dentro de la Transformación y no cambia a lo largo de las configuraciones de los Pasos, e igualmente se tiene una descripción, la cual permite aclarar el propósito del paso.
Configuración del Paso 1 :
• Doble click sobre el Paso CSV file input.
• Se desplegará la ventana de configuración perteneciente a éste tipo de Paso. Acá se indicará la ubicación, el formato y el contenido del archivo de entrada.
• Reemplazar el nombre que lleva por defecto por uno más representativo. Se llamará Lista.
• En el campo Fieldname, ingresar el nombre y la ubicación del archivo de entrada.
Nota:Justo a la derecha de las cajas de texto hay un símbolo de dolar rojo. Esto significa que se pueden usar variables así como texto plano en éste campo. Una variable puede ser escrita manualmente como ${name_of_the_variable}, o seleccionada desde la ventana de variables la cual se puede desplegar con Ctrl-Espacio. Esta ventana presenta variables predefinidas y creadas por el usuario, pero como en el momento no ha sido creada ninguna, solo se verán variables predefinidas. Entre éstas seleccionar:
${Internal.Transformation.Filename.Directory}
Seguido del nombre de la variable, escribir el nombre del archivo CSV creado:
${Internal.Transformation.Filename.Directory}/list.csv En tiempo de ejecución la variable será reemplazada por este valor, que será la dirección donde la Transformación está guardada. La Transformación buscará el archivo list.csv en la ubicación especificada.
• Dar click en el botón de Get Fields para agregar los nombres de las columnas de la entrada a la cuadrícula presentada. Por defecto el Paso asume que el archivo posee encabezados.
• La cuadrícula tiene ahora los nombres de las columnas del archivo: apellido y nombre y debería verse de la siguiente manera.
Figure 4. Configuración del primer Paso
• Desmarcar la opción de lazy conversion.
• Oprimir en el botón Preview para asegurarse de que el archivo fue leído como se esperaba. Aparecerá una ventana mostrando los datos del archivo.
• Oprimir Ok para finalizar la definición del Paso 1.
Configuración del Paso 2:
• Doble Click sobre el Paso Modified JavaScript Value.
• La ventana de configuración del Paso aparecerá. Es diferente a la del Paso previo. Presenta un área donde se puede escribir código JavaScript. Se usará para construir el mensaje “Hello, “ concatenado con cada uno de los nombres.
• Llamar a este Paso Saludos.
• El área principal de la ventana de configuración es para codificar. A la izquierda, hay un árbol con un conjunto de funciones disponibles para usar en el código. En particular, las dos últimas ramas continene los campos de entrada y salida, listos para usar en el código. Escribir el siguiente código: var msg = ’Hello, ’ + name.getString() + "!";
• Al final en la cuadrícula, se puede digitar el nombre de cualquier variable creada en el código. En este caso, se ha creado la variable msg. Como se necesita enviar este mensaje al archivo de salida, se tiene que escribir el nombre de la variable en la cuadrícula. El resultado será el siguiente:
Figure 5. Configuración del Paso 2
• Click en Ok para finalizar la configuración.
• Seleccionar el Paso que se acaba de configurar. Para revisar que el mensaje esté saliendo del Paso, se verán las entradas y salidas que posee. Las entradas son las columnas que llegan al Paso. Las salidas con las columnas que salen del Paso.
• Click derecho en el Paso.
• Seleccionar Show Input Fields. Se verá que estos son el apellido y nombre que vienen del Paso 1.
• Seleccionar Show Output Fields. Se verá que no solo estan los campos existentes, sino además el nuevo campo msg.
Configuración del Paso 3:
• Doble click sobre el Paso XML Output. La ventana de configuración aparecerá. Se establecerán el nombre y la ubicación del archivo de salida, y se especificará cuales de los campos se quieren incluir.
• Nombre al paso Archivo con Saludos.
• En la caja de Filename escribir ${Inter- nal.Transformation.Filename.Directory}/Hello.xml.
Figure 6. Configuración Paso 3-1
• Dirigirse a la pestaña Fields de la ventana, y dar click en el botón Get Fields para llenar la cuadrícula con los tres campos de entrada. En la salida solo se quiere el saludo, así que eliminar los campos apellido y nombre.
• Guardar la Transformación de nuevo.
Figure 7. Configuración Paso 3-2
5. CORRER LATRANSFORMACIÓN
Cuando se ejecuta una Transformación, casi todos los pasos son ejecutados simultánemaente. La Transformación se ejecuta asincrónicamente. Las filas de datos fluyen a través de los Pasos con libertad. Cada fila procesada, se dirige al siguiente Paso sin esperar por las anteriores.
Este es un ejemplo pequeño con pocas filas de nombres, así que es difícil ver lo asincrónico de la ejecución, pero cabe recordar que sin embargo, es posible que al mismo tiempo
un nombre sea escrito en el archivo de salida, y otro esté dejando el primer Paso.
6. VERIFICAR, VISUALIZAR YEJECUTAR
Antes de ejecutar la transformación, asegurarse de que todo está correctamente configurado, a través de la opción Verify , ubicada en la barra de herramientas del área de trabajo.
Figure 8. Opción Verify
Seleccionar ahora la opción de Preview this transfor- mation. Como se puede observar, Spoon sugiere qué Paso visualizar. Seleccionar el Paso Saludos y dar click en Quick
Figure 9. Preview this transformation
Launch para revisar que la salida generada sea la correcta y se guarde en el archivo XML.
Figure 10. QuickLaunh
Si todo se encuentra correctamente, correr la transformación con la opción Run ubicada en la misma barra de herramientas.
Se desplegará la siguiente ventana, donde daremos a continuación click en Launch.
Figure 11. Execute a transformation
Si no se generó ningun tipo de error, abrir el archivo Hello.xml generado y revisar su contenido.
7. PAN
Pan permite ejecutar Transformaciones desde una terminal.
El script es pan.bat en Windows, or span.sh en otras plataformas, y está localizado en la carpeta de instalación. Si se corre el script se verán una descripción de pan con una lista de opciones disponibles.
Para ejecutar la Transformación, insertar el siguiente comando:
Pan /file <Jobs_path>/Hello.ktr /norep
• /norep es un comando para pedir a Spoon no conectarse a un repositorio.
• /file precede el nombre del archivo que contiene la Transformación.
• <Jobs_path> es la ubicación completa de la carpeta Tutorial creada.
Las otras opciones son ejecutadas con valores por defecto.
Después de digitar el comando, la Transformación será ejecutada de la misma forma en que se realizó en Spoon.
En este caso, el registro se escribe en la terminal, a menos que se especifique un archivo donde escribirlo. Contendrá basicamente la misma información que se presentó en el entorno gráfico.
8. BIBLIOGRAFÍA
*Pentaho Kettle Project. Disponible en:
http://kettle.pentaho.com/.
*Pentaho Infocenter. Disponible en: infocenter.pentaho.com/.
*Forum: Pentaho Data Integration [Kettle]. Disponible en:
http://forums.pentaho.com/forumdisplay.php?135-Pentaho- Data-Integration-Kettle
*BATCHELOR,Marc. Latest Pentaho Data Inte- gration (ka Kettle) Documentation. Disponible en:
http://wiki.pentaho.com/display/EAI/Latest+Pentaho+Data+Integration+%28aka+Kettle%29+Documentation