Cómo programar la ejecución de jobs y transformaciones de kettle / PDI CE

La versión Enterprise de Pentaho Data Integration incluye un scheduler con el que es muy fácil programar la ejecución de jobs de Kettle, pero si tienes la versión CE (Community Edition) no busques este scheduler porque es uno de los 'extras' que incluye la versión de pago de PDI.

La buena noticia es que, aunque no sea tan intuitivo, con la versión CE es bastante fácil utilizar las aplicaciones kitchen o pan desde la linea de comandos para ejecutar jobs y transformaciones de Kettle, respectivamente.

Después sólo hay que incluir el comando en un script ejecutable, y llamar al script desde un programador de tareas externo como el CRON de Linux, el Programador de tareas de Windows, desde otras ETL's, o desde gestores de jobs de bases de datos como PostgreSQL o SQLServer.

Ejemplo de ejecución de jobs de Kettle desde linea de comandos

Yo lo he hecho desde windows y he utilizado el Agente de SQL Server para crear un trabajo con una programación diaria que ejecuta un archivo .bat con el comando de kitchen que ejecuta un job de kettle, y este es el ejemplo de contenido del .bat:

cd "D:\Pentaho\data-integration"
call Kitchen.bat /file:D:\DM_Twitter\Pentaho\LanzaBotsFollow.kjb "-param:CUENTA=PentahoBot" -logfile=D:\DM_Twitter\Pentaho\logKettle.txt
pause
exit

El pause es sólo para comprobar que todo ha ido bien, cuando se deje planificado es mejor quitarlo para no encontrarte cada día la pantalla de CMD abierta.

Utilizo la opción -param con el nombre del parámetro y el valor si se han de pasar parámetros al job, si el job no tuviera parámetros simplemente se excluye esta parte.

Ejemplo de ejecución de transformaciones de Kettle desde linea de comandos

Lo más habitual es ejecutar jobs, pero si se desea ejecutar directamente transformaciones de kettle hay que utilizar la aplicación pan en lugar de kitchen, un ejemplo de contenido de un .bat que jecute una transformación sería algo como esto:

cd "D:\Pentaho\data-integration" call Kitchen.bat /file:D:\DM_Twitter\Pentaho\CargaFollowers.ktr "-param:CUENTA=PentahoBot" -logfile=D:\DM_Twitter\Pentaho\logKettle.txt
exit

 

Cómo programar la ejecución del script que ejecuta jobs de Kettle

Como ya he comentado antes, aquí hay muchas posibilidades porque se puede utilizar cualquier utilidad de planificación de tareas del sistema operativo, aplicaciones independientes, schedulers de jobs de bases de datos, ETL's, etc. con las que sólo hay que definir una tarea programada o 'schedule' que ejecute el archivo .bat que hayamos creado, o incluso directamente los comandos que hemos incluído en el fichero .bat.

Dejo aquí tres ejemplos para programar la ejecución de un script en un fichero .bat en sistemas Windows, y una referencia para averiguar como ejecutar jobs de kettle desde el servidor de BI de Pentaho, otra interesante alternativa.

Programar ejecución del script .bat con el programador de tareas de Windows

En Windows lo más estándard sería utilizar el Programador de Tareas para crear una tarea que ejecute el script .bat que incluye el comando que llama a kitchen o pan para lanzar jobs o transformaciones. La llamada al script se configura creando una nueva acción en la pestaña 'Acciones', y la programación para que se repita la ejecución se configura creando y configurando un nuevo desencadenador en la pestaña 'Desencadenadores'.

Llamada a script desde el programador de tareas de windows

Ejecutar el script o los comandos con un job programado de SQL Server

Si tienes una base de datos SQL Server, una opcion muy cómoda y fácil de gestionar después es crear un trabajo con programación con el Agente de SQL Server, desde el entorno de SSMS (SQL Server Management Studio), en que se ha de definir un paso de tipo 'Sistema operativo (CmdExec)' que ejecute el fichero .bat, y una programación para repetir la ejecución cada cierto tiempo y a las horas en las que se configure:

Gestión de jobs programados de SQL Server

Ejecutar un script de un fichero .bat desde paquetes de SSIS (SQL Server Data Tools)

Otra opción para ejecutar el .bat que lanza jobs de kettle es hacerlo desde otra ETL.

No es muy habitual trabajar con dos ETL's distintas a la vez, pero a mi por ejemplo, para este caso concreto, me ha ido bien Kettle para crear unos procesos concretos que quiero incluir dentro de una serie de procesos de ejecución periodica que tengo implementados en SSIS (SQL Server Integration Services), así que lo que hago es utilizar dentro del entorno de SQL Server Data Tools la tarea de 'Ejecutar proceso' para ejecutar el .bat que ejecuta gracias a kitchen los jobs de PDI (Pentaho Data Integration):

Lanza script de kettle desde SQL Server Integration Services

Utilizar el servidor de BI de Pentaho para programar la ejecución de jobs de PDI

Otra opción, un poco más complicada, pero que no necesita herramientas de Windows ni aplicaciones externas, si se está utilizando el servidor de BI de Pentaho, versión 5 o 6, es crear un fichero .xaction que ejecute el job de kettle, subir los ficheros .xaction y job .kjb al server de Pentaho BI, y utilizar el scheduler del servidor de Pentaho para ejecutar el xaction que a su vez ejecuta el/los jobs según la programación que se configure. Aqui lo explican en más detalle.

Si alguien lo prueba que comente qué tal le va, yo he probado sólo las opciones de Windows (Programador de tareas de windows), y SQL Server (Trabajos de SQL Server y Tareas de SSIS)

Necesito aprender como poder pegar Pentaho, con python. Es decir hacer un reporte y correrlo desde python. Roberto Costa Rica.