Kettle ( a.k.a. Pentaho Data Integration) es una de las herramientas más versátiles que conozco. Ha pasado de ser una herramienta ETL a ser prácticamente un Lenguage de Programación Visual . Eso lo saben bien los amigos de Hitachi, Pentaho y Webdetails....
Recientemente me he visto en la necesidad de incorporar transformaciones y trabajos dentro de aplicaciones java..... Nada más sencillo:
Creamos nuestro proyecto Java...
Importamos todas las librerías que podamos necesitar al build path:
RunTran.java
package runTrans;
import org.pentaho.di.core.KettleEnvironment;
import org.pentaho.di.core.exception.KettleException;
import org.pentaho.di.trans.Trans;
import org.pentaho.di.trans.TransMeta;
public class RunTrans {
public static void main(String[] args) {
String filename = args[0];
try {
KettleEnvironment.init();
TransMeta metaData = new TransMeta(filename);
Trans trans = new Trans(metaData);
trans.execute(null);
trans.waitUntilFinished();
if (trans.getErrors() > 0) {
System.out.print("Error Ejecutando la transformacion");
}
} catch (KettleException e) {
e.printStackTrace();
}
}
}
Ahora tan sólo tenemos que invocar nuestra clase pesándole cómo argumento el path completo de nuestra transformación.
En el caso de que queramos invocar un trabajo deberemos hacerlo tal y cómo se muestra en la clase de ejemplo que se muestra a continuación:
RunJob.java
package runJob;
import org.pentaho.di.core.KettleEnvironment;
import org.pentaho.di.job.Job;
import org.pentaho.di.job.JobMeta;
public class RunJob {
public static void main(String[] args) throws Exception {
String filename = args[0];
KettleEnvironment.init();
JobMeta jobMeta = new JobMeta(filename, null);
Job job = new Job(null, jobMeta);
job.start();
job.waitUntilFinished();
if (job.getErrors()!=0) {
System.out.println("Error ejecutando el trabajo");
} }
}
Ahora tan sólo tenemos que invocar nuestra clase pesándole cómo argumento el path completo de nuestro trabajo.
Fuentes:
Este código ha sido probado con la versión 4.4 de Kettle... aunque estoy bastante seguro que con kettle 5 también funcionará.
Recientemente me he visto en la necesidad de incorporar transformaciones y trabajos dentro de aplicaciones java..... Nada más sencillo:
Creamos nuestro proyecto Java...
Importamos todas las librerías que podamos necesitar al build path:
- {MI_KETTLE_DIR}/lib/
- {MI_KETTLE_DIR}/libext/
- {MI_KETTLE_DIR}/libext/commons/
- {MI_KETTLE_DIR}/libext/pentaho/
- {MI_KETTLE_DIR}/libext/spring/
RunTran.java
package runTrans;
import org.pentaho.di.core.KettleEnvironment;
import org.pentaho.di.core.exception.KettleException;
import org.pentaho.di.trans.Trans;
import org.pentaho.di.trans.TransMeta;
public class RunTrans {
public static void main(String[] args) {
String filename = args[0];
try {
KettleEnvironment.init();
TransMeta metaData = new TransMeta(filename);
Trans trans = new Trans(metaData);
trans.execute(null);
trans.waitUntilFinished();
if (trans.getErrors() > 0) {
System.out.print("Error Ejecutando la transformacion");
}
} catch (KettleException e) {
e.printStackTrace();
}
}
}
Ahora tan sólo tenemos que invocar nuestra clase pesándole cómo argumento el path completo de nuestra transformación.
En el caso de que queramos invocar un trabajo deberemos hacerlo tal y cómo se muestra en la clase de ejemplo que se muestra a continuación:
RunJob.java
package runJob;
import org.pentaho.di.core.KettleEnvironment;
import org.pentaho.di.job.Job;
import org.pentaho.di.job.JobMeta;
public class RunJob {
public static void main(String[] args) throws Exception {
String filename = args[0];
KettleEnvironment.init();
JobMeta jobMeta = new JobMeta(filename, null);
Job job = new Job(null, jobMeta);
job.start();
job.waitUntilFinished();
if (job.getErrors()!=0) {
System.out.println("Error ejecutando el trabajo");
} }
}
Ahora tan sólo tenemos que invocar nuestra clase pesándole cómo argumento el path completo de nuestro trabajo.
Fuentes:
- https://wiki.pentaho.com/display/EAI/Pentaho+Data+Integration+-+Java+API+Examples
- https://wiki.pentaho.com/pages/viewpage.action?pageId=13175504
- https://ameethpaatil.blogspot.com.es/2011/08/hello-world-with-pentaho.html
- https://pentahodev.blogspot.com.es/2009/08/developdebug-kettle-plugin-in-eclipse.html
Este código ha sido probado con la versión 4.4 de Kettle... aunque estoy bastante seguro que con kettle 5 también funcionará.