java kettle 初步

来源:互联网 发布:股市交易软件 编辑:程序博客网 时间:2024/06/11 05:37
package com.Nxin.BigData;
import org.pentaho.di.core.KettleEnvironment;
import org.pentaho.di.core.exception.KettleEOFException;
import org.pentaho.di.core.exception.KettleException;
import org.pentaho.di.repository.RepositoryDirectoryInterface;
import org.pentaho.di.repository.filerep.KettleFileRepository;
import org.pentaho.di.repository.filerep.KettleFileRepositoryMeta;
import org.pentaho.di.trans.TransMeta;
import org.pentaho.di.job.JobMeta;
import org.pentaho.di.job.Job;
import org.pentaho.di.trans.Trans;


public class Kettle {
public static void runTran() {
try {
String filename = "D:\\test.ktr"; //${Internal.Transformation.Filename.Directory}识别为程序目录
// StepLoader.init();
// EnvUtil.environmentInit();
KettleEnvironment.init();
TransMeta transMeta = new TransMeta(filename);
Trans trans = new Trans(transMeta);


trans.prepareExecution(null);  
       trans.startThreads();  
trans.waitUntilFinished();
if (trans.getErrors() > 0) {
throw new RuntimeException(
"There were errors during transformation execution.");
}
} catch (KettleException e) {
// TODO Put your exception-handling code here.
System.out.println(e);
}
}
public static void runJob() {
try {
String filename = "D:\\test.kjb";   //${Internal.Job.Filename.Directory}识别为程序目录
// StepLoader.init();
// EnvUtil.environmentInit();
KettleEnvironment.init();

JobMeta jobMeta = new JobMeta(filename, null);
Job job = new Job(null, jobMeta);

       
job.start();  
job.waitUntilFinished();
if (job.getErrors() > 0) {
throw new RuntimeException(
"There were errors during transformation execution.");
}
} catch (KettleException e) {
// TODO Put your exception-handling code here.
System.out.println(e);
}
}  

  


    public static void FileRepository() {
     String tranName = "test0103";// 传输名称 
     Trans trans = null; 
       try { 
         // 初始化 
         KettleEnvironment.init(); 
         // 资源库元对象 
         KettleFileRepositoryMeta repMeta = 
             new KettleFileRepositoryMeta("", "", "Kettle", "file:///D:/ETL/Kettle"); 
         // 文件形式的资源库 
         KettleFileRepository rep = new KettleFileRepository(); 
         rep.init(repMeta); 
         // 转换对象 
         if (tranName != null && !"".equals(tranName)) { 
           TransMeta transMeta = rep.loadTransformation(rep.getTransformationID(tranName, null), null); 
           // 转换 
           trans = new Trans(transMeta); 
           // 执行转换 
           trans.execute(null); 
           // 等待转换执行结束 
           trans.waitUntilFinished(); 
           // 抛出异常 
           if (trans.getErrors() > 0) { 
             throw new Exception("传输过程中发生异常"); 
           } 
         } else { 
           throw new KettleEOFException("传输名为空!"); 
         } 
       } catch (Exception e) { 
         if (trans != null) { 
           trans.stopAll(); 
         } 
         e.printStackTrace(); 
       } 


    
    }
   
    
    @SuppressWarnings("deprecation")
public static void JobFileRepository() {
   String jobName = "test0103_2";// 传输名称 
   Job job = null; 
     try { 
       // 初始化 
       KettleEnvironment.init(); 
       // 资源库元对象 
       KettleFileRepositoryMeta repMeta = 
           new KettleFileRepositoryMeta("", "Kettle2", "Kettle2", "file:///D:/ETL/Kettle"); 
    // repMeta.setBaseDirectory("file:///D:/ETL/Kettle");;
       // 文件形式的资源库 
       KettleFileRepository rep = new KettleFileRepository(); 
     
       rep.init(repMeta); 
     
     //RepositoryDirectoryInterface directory = rep.loadRepositoryDirectoryTree();
     //RepositoryDirectoryInterface directory = rep.findDirectory("file:///D:/ETL/Kettle");
     RepositoryDirectoryInterface directory = rep.findDirectory(repMeta.getBaseDirectory());
       // 作业对象 
       if (jobName != null && !"".equals(job)) { 
        // JobMeta jobMeta = rep.loadJob(jobName, directory, null, null); 
      JobMeta jobMeta = rep.loadJob(jobName, directory, null, null); 
         jobMeta.activateParameters();
         // 作业 
         job = new Job(rep,jobMeta); //必须加rep否则无法
       jobMeta.setParameterValue("client", "clientA"); //only needed for ETL
         // 执行作业 
         job.start();
      
         // 等待作业执行结束 
         job.waitUntilFinished(); 
         // 抛出异常 
         if (job.getErrors() > 0) { 
           throw new Exception("传输过程中发生异常"); 
         } 
       } else { 
         throw new KettleEOFException("传输名为空!"); 
       } 
     } catch (Exception e) { 
       if (job != null) { 
      job.stopAll(); 
       } 
       e.printStackTrace(); 
     } 


  
  }
  
    
    
public static void main(String[] args) {


//runTran();
//runJob();
FileRepository();
//JobFileRepository();
}
  
 
}
0 0
原创粉丝点击