㈠ kettle調用已經生成的ktr,然後再java端怎麼能獲取數據集
result.getrows不是獲取trans流程裡面『流動』的數據的。
trans裡面有個『復制記錄到結果』插件,輸出到裡面的數據,通過result.getrows就能獲取。
㈡ 如何將kettle 集成到java應用
在Java應用程序中調用Kettle的Transformation
package com.ggd543.kettle.trans
import org.pentaho.di.core.util.EnvUtil
import org.pentaho.di.core.KettleEnvironment
import org.pentaho.di.trans.{Trans, TransMeta}
/**
*
* User: 劉永健
* Date: 12-3-8
* Time: 下午12:14
* To change this template use File | Settings | File Templates.
*/
object TransDemo extends App {
execTrans(args(0)) // ktr文件的全路徑
def execTrans(fileName: String) {
KettleEnvironment.init()
EnvUtil.environmentInit();
val transMeta = new TransMeta(fileName)
val trans = new Trans(transMeta)
trans.execute(null) // you can pass arguments instead of null
trans.waitUntilFinished();
if (trans.getErrors > 0) {
throw new RuntimeException("There were errors ring transformation execution")
}
}
}
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>kettledemo</groupId>
<artifactId>kettledemo</artifactId>
<version>1.0</version>
<dependencies>
<!-- Test -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.scala-tools.testing</groupId>
<artifactId>specs_2.9.1</artifactId>
<version>1.6.9</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.scalatest</groupId>
<artifactId>scalatest_2.9.1</artifactId>
<version>1.6.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.typesafe.akka</groupId>
<artifactId>akka-actor</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>com.typesafe.akka</groupId>
<artifactId>akka-testkit</artifactId>
<version>2.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>pentaho</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<pentaho.kettle.version>4.2.1.1</pentaho.kettle.version>
</properties>
<dependencies>
<dependency>
<groupId>pentaho-kettle</groupId>
<artifactId>kettle-core</artifactId>
<version>${pentaho.kettle.version}</version>
</dependency>
<dependency>
<groupId>pentaho-kettle</groupId>
<artifactId>kettle-db</artifactId>
<version>${pentaho.kettle.version}</version>
</dependency>
<dependency>
<groupId>pentaho-kettle</groupId>
<artifactId>kettle-engine</artifactId>
<version>${pentaho.kettle.version}</version>
</dependency>
<dependency>
<groupId>pentaho</groupId>
<artifactId>pentaho-hdfs-vfs</artifactId>
<version>1.0.1</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
<dependency>
<groupId>pentaho-kettle</groupId>
<artifactId>kettle-test</artifactId>
<version>${pentaho.kettle.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<repositories>
<repository>
<id>pentaho</id>
<name>Pentaho Repository</name>
<url>http://repo.pentaho.org/artifactory/pentaho/</url>
</repository>
</repositories>
</profile>
<profile>
<id>scala</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<scala.version>2.9.1</scala.version>
</properties>
<repositories>
<repository>
<id>typesafe</id>
<name>Typesafe Repository</name>
<url>http://repo.typesafe.com/typesafe/releases/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-compiler</artifactId>
<version>${scala.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>${scala.version}</version>
</dependency>
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-swing</artifactId>
<version>${scala.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.scala-tools</groupId>
<artifactId>maven-scala-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
㈢ 怎麼實現java簡單調用kettle我自己做好的job
怎麼實現java簡單調用kettle我自己做好的job
/**
* 本測試類慎用!!!!!!!
*
* @param args
*/
public static void main(String[] args) {
String datetime = "2014-12-19 23:20:45";
String[] params = {"707", datetime}; // 傳遞參數
String path = "F:\\job7.kjb";
// runTransfer(params, path);
runJob(params, path);
// runJob();
// jbResource();
}
/**
* 運行轉換文件方法
* @param params 多個參數變數值
* @param ktrPath 轉換文件的路徑,後綴ktr
*/
public static void runTransfer(String[] params, String ktrPath) {
Trans trans = null;
try {
// // 初始化
// 轉換元對象
KettleEnvironment.init();// 初始化
EnvUtil.environmentInit();
TransMeta transMeta = new TransMeta(ktrPath);
// 轉換
trans = new Trans(transMeta);
// 執行轉換
trans.execute(params);
// 等待轉換執行結束
trans.waitUntilFinished();
// 拋出異常
if (trans.getErrors() > 0) {
throw new Exception(
"There are errors ring transformation exception!(傳輸過程中發生異常)");
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* java 調用 kettle 的job
*
* @param jobname
* 如: String fName= "D:\\kettle\\informix_to_am_4.ktr";
*/
public static void runJob(String[] params, String jobPath) {
try {
KettleEnvironment.init();
// jobname 是Job腳本的路徑及名稱
JobMeta jobMeta = new JobMeta(jobPath, null);
Job job = new Job(null, jobMeta);
// 向Job 腳本傳遞參數,腳本中獲取參數值:${參數名}
// job.setVariable(paraname, paravalue);
job.setVariable("id", params[0]);
job.setVariable("dt", params[1]);
job.start();
job.waitUntilFinished();
if (job.getErrors() > 0) {
throw new Exception(
"There are errors ring job exception!(執行job發生異常)");
}
} catch (Exception e) {
e.printStackTrace();
}
}
㈣ 怎麼在kettle官網查找kettle的javaApi和一些案例
publicclassKettleTest{
publicstaticvoidmain(String[]args){
Stringfilename="/wang/work/study/Kettle/sample/excel_trans.ktr";
try{
KettleEnvironment.init();
EnvUtil.environmentInit();
TransMetatransMeta=newTransMeta(filename);
Transtrans=newTrans(transMeta);
trans.execute(null);//.
trans.waitUntilFinished();
if(trans.getErrors()>0)
{
thrownewRuntimeException(".");
}
}
catch(KettleExceptione){
//TODOPutyourexception-handlingcodehere.
System.out.println(filename);
System.out.println(e);
}
}
}
㈤ 通過取出kettle日誌里過濾數據的條數來記錄,java有這樣的包嗎
這個我沒遇到過。不過可以這樣:你在kettle里做個過濾,吧過濾出的數據單獨寫到 txt或者數據表裡,然後 java調 ktr ,然後開個線程 掃描過濾的數據。
㈥ java 調用kettle報錯
Unable to get VFS File object for filename 'file:///D:/tDataWarehouseMonitor/wuzilb.ktr' : Unknown scheme "sftp" in URI "{1}".這個錯誤是沒有找到文件的路徑,看看這路徑下有沒有文件
㈦ kettle中java腳本怎麼使用
完整例子如下:
Java代碼
String firstnameField;
String lastnameField;
String nameField;
public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException
{
// 獲取輸入
//
Object[] r = getRow();
// 輸入為空,直接false
//
if (r == null) {
setOutputDone();
return false;
}
// 處於性能考慮,parameter只查一次
//
if (first) {
firstnameField = getParameter("FIRSTNAME_FIELD");
lastnameField = getParameter("LASTNAME_FIELD");
nameField = getParameter("NAME_FIELD");
first=false;
}
// 用 createOutputRow() 來保證output的數組夠大,能夠裝下任何新的域
//
Object[] outputRow = createOutputRow(r, data.outputRowMeta.size());
String firstname = get(Fields.In, firstnameField).getString(r);
String lastname = get(Fields.In, lastnameField).getString(r);
// Set the value in the output field
//
String name = firstname+" "+lastname;
get(Fields.Out, nameField).setValue(outputRow, name);
// putRow will send the row on to the default output hop.
//
putRow(data.outputRowMeta, outputRow);
return true;
}
㈧ kettle的java組件怎麼去讓一列數據分成幾列
kettle的java組件怎麼去讓一列數據分成幾列
在Java應用程序中調用Kettle的Transformation
package com.ggd543.kettle.trans
import org.pentaho.di.core.util.EnvUtil
import org.pentaho.di.core.KettleEnvironment
import org.pentaho.di.trans.{Trans, TransMeta}
㈨ kettle5.1 使用JAVA 調用 方式 jar包問題
要引用kettle 里lib 表裡里的js包,包名名稱基本有js相關字樣你可以嘗試找找,還有一些其它依賴包