java(springboot)调用kettle脚本

java(springboot)调⽤kettle脚本
java 调⽤kettle脚本
可以提前熟悉⼀下构建过程 
之前的kettle docker化的过程中,我是直接将Spoon整个项⽬导⼊的,所以造成⽂件臃肿.⽣产环境使⽤crontab⽅式部署,但是因为服务器遭到挖矿脚本的攻击.所以普通⽤户crontab服务会被攻击⽽停⽌运⾏.⽽且使⽤crontab的⽅式确实不便于管理(这⾥推荐XXL-JOB分布式调度平台).当然在实际开发的过程中我们也不能灵活的部署,所以我们如果能借助熟悉的开发语⾔来调⽤脚本的话能够让开发⼯作变得更加简单.kettle的循环脚本确实在次数过多的时候会出现问题.
我们直接进⼊主题.
新建KettleDome.java⽂件(可以在编译器上开发)
import org.KettleEnvironment;
import org.xception.KettleException;
import org.ans.Trans;
import org.ans.TransMeta;
public class KettleDome{
public static void main(String[] args) throws KettleException{
String fileName = "/~/test.ktr";
System.out.println("-----------");
KettleEnvironment.init();
TransMeta transMeta = new TransMeta(fileName);
Trans trans = new Trans(transMeta);
折叠音箱ute(null);
trans.waitUntilFinished();
}
}
将spoon中的lib⽬录拷贝到/~/lib⽬录下
构建class⽂件
javac -extdirs /~/lib  KettleDome.java
-extdirs:加⼊第三⽅jar包⽬录
构建jar包
jar cvf KettleDome.jar KettleDome.class
touch MANIFEST.MF
vim MANIFEST.MF
管道内衬
~~
nifest-Version: 1.0
Created-By: 1.4.2 (Sun Microsystems Inc.)
Main-Class: KettleDome
~~
jar umf MANIFEST.MF KettleDome.jar
运⾏脚本
java -jar -dirs=/~/lib/ KettleDome.jar
-dirs:加⼊第三⽅jar包⽬录
运⾏结果
2019/12/13 16:20:43 - user_tmp - 为了转换解除补丁开始  [user_tmp]
...
2019/12/13 16:20:46 - kettle-docker - 为'kettle-docker'创建数据库连接池...
2019/12/13 16:20:46 - kettle-docker - 为'kettle-docker'创建数据库连接池成功
...execute
2019/12/13 16:21:15 - 去除重复记录.0 - 完成处理 (I=0, O=0, R=1758, W=1741, U=0, E=0)
2019/12/13 16:21:19 - 表输出.0 - 完成处理 (I=0, O=1741, R=1741, W=1741, U=0, E=0)
如果使⽤maven
将核⼼包下载到本地仓库(data/tool/data-integration/lib 是我安装spoon的⽬录)
相关包查询
ls -al | egrep "kettle-(core|engine)|metastore"
kettle相关jar包现在到本地maven仓库
mvn install:install-file -Dfile=/data/tool/data-integration/lib/kettle-core-8.2.0.0-342.jar -DgroupId=org.pentaho -DartifactId=kettle-core -Dversion=8.2.0.0-342 -Dpackaging=jar
mvn install:install-file -Dfile=/data/tool/data-integration/lib/kettle-engine-8.2.0.0-342.jar -DgroupId=org.pentaho -DartifactId=kettle-engine -Dversion=8.2.0.0-342 -Dpackaging=jar
mvn install:install-file -Dfile=/data/tool/data-integration/lib/metastore-8.2.0.0-342.jar -DgroupId=org.pentaho -DartifactId=metastore -Dversion=8.2.0.0-342 -Dpackaging=jar
如果你需要启动⼀个⾥⾯含有表输⼊(出)&excel&java脚本的.ktr⽂件那么你需要引⼊如下的⽂件
<properties>
<java.version>1.8</java.version>
<kettle.version>8.2.0.0-342</kettle.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--ETL-->
<dependency>
<groupId>org.pentaho</groupId>
<artifactId>kettle-core</artifactId>
<version>${kettle.version}</version>
</dependency>
<dependency>
<groupId>org.pentaho</groupId>
<artifactId>kettle-engine</artifactId>
<version>${kettle.version}</version>
</dependency>
<dependency>
懒人运动机<groupId>org.pentaho</groupId>
<artifactId>metastore</artifactId>
<version>${kettle.version}</version>
</dependency>
<!--        <dependency>-->
<!--            <groupId>org.pentaho</groupId>-->
<!--            <groupId>org.pentaho</groupId>-->
<!--            <artifactId>kettle-dbdialog</artifactId>-->
<!--            <version>${kettle.version}</version>-->
<!--        </dependency>-->
<!-- mvnrepository/artifact/org.apachemons/commons-vfs2 -->
<dependency>
<groupId>org.apachemons</groupId>
<artifactId>commons-vfs2</artifactId>
<version>2.4.1</version>
</dependency>
<dependency>
<groupId&le.guava</groupId>
<artifactId>guava</artifactId>
<version>28.1-jre</version>
</dependency>
<!-- mvnrepository/artifact/commons-lang/commons-lang -->
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
磨煤机衬板</dependency>
<!-- mvnrepository/artifact/commons-codec/commons-codec -->
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.13</version>
</dependency>
<!-- mvnrepository/artifact/org.apachemons/commons-io -->
<dependency>
<groupId>org.apachemons</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
</dependency>
<!-- mvnrepository/dehaus.janino/commons-compiler -->        <dependency>
<groupId&dehaus.janino</groupId>
<artifactId>commons-compiler</artifactId>
<version>3.1.0</version>
</dependency>
<!-- mvnrepository/dehaus.janino/janino -->
<dependency>
<groupId&dehaus.janino</groupId>
<artifactId>janino</artifactId>
<version>3.1.0</version>
</dependency>
<!--        <!– mvnrepository/artifact/org.apache.poi/poi –>--> <!--        <dependency>-->
<!--            <groupId>org.apache.poi</groupId>-->
<!--            <artifactId>poi</artifactId>-->
<!--            <version>4.1.1</version>-->
<!--        </dependency>-->
<!-- mvnrepository/artifact/org.apache.poi/poi-ooxml -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.1</version>
</dependency>
<!-- mvnrepository/artifact/net.sourceforge.jexcelapi/jxl -->
<dependency>
<groupId>net.sourceforge.jexcelapi</groupId>
<artifactId>jxl</artifactId>
<version>2.6.12</version>
</dependency>
<!-- mvnrepository/artifact/commons-dbcp/commons-dbcp -->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<!--ETL-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.43</version>
</dependency>
</dependencies>
java⽂件
l.test;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.KettleEnvironment;
import org.xception.KettleException;
import org.ans.Trans;19rrr
import org.ans.TransMeta;
import org.st.context.SpringBootTest;
import st.context.junit4.SpringRunner;
/**
* @Author: xuzz
* @Description:
* @Date: Created in 上午11:00 19-12-13
* @Modified By:
*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class TestDome {
@Test
public void test() throws KettleException {
String fileName = "/~/test.ktr";
System.out.println("-----------");
KettleEnvironment.init();
TransMeta transMeta = new TransMeta(fileName);
Trans trans = new Trans(transMeta);
虚拟墓地trans.waitUntilFinished();
}
}
当然这些是你没有经过⾸次试错的得到的结果.
以上:当前⽤户的.kettle⽬录下的配置⽂件依然有效. .kjb的调⽤⽅式
JobMeta jm = new JobMeta("/~/~.kjb",null);        Job job = new Job(null, jm);
job.start();
job.waitUntilFinished();
.kjb .ktr传参
作业:
job.setParameterValue("key","value"); job.setVariable(key,v);
转换:
trans.setParameterValue("key","value"); trans.setVariable(key,v);

本文发布于:2024-09-22 11:24:39,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/327893.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:开发   脚本   过程   试错   熟悉   分布   攻击   服务器
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议