kettle工具中嵌入java代码_kettle设置变量

kettle工具中嵌入java代码_kettle设置变量Java调用Kettle工具方法/***Java调用Kettle工具类**@classnameKettleUtil*@date2020/3/2416:24*/publicfinalclassKettleUtil{privatestaticfinalLoggerlog=LoggerFactory.getLogger(KettleUt…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

Java调用Kettle工具方法

这里需要的主要依赖包下面已列出,其他的运行时缺什么补什么就行:

<dependency>
    <groupId>pentaho-kettle</groupId>
    <artifactId>kettle-core</artifactId>
    <version>7.1.0.0-12</version>
</dependency>
<dependency>
    <groupId>pentaho-kettle</groupId>
    <artifactId>kettle-dbdialog</artifactId>
    <version>7.1.0.0-12</version>
</dependency>
<dependency>
    <groupId>pentaho-kettle</groupId>
    <artifactId>kettle-engine</artifactId>
    <version>7.1.0.0-12</version>
</dependency>
<dependency>
    <groupId>pentaho-kettle</groupId>
    <artifactId>metastore</artifactId>
    <version>7.1.0.0-12</version>
</dependency>

插件地址 https://download.csdn.net/download/xukun5137/12267874

/** * Java调用Kettle工具类 * * @classname KettleUtil * @date 2020/3/24 16:24 */
public final class KettleUtil { 

private static final Logger log = LoggerFactory.getLogger(KettleUtil.class);
private static final String KETTLE_BASE_DIR = "D:\\kettle";
private static final String KETTLE_KET_DIR = KETTLE_BASE_DIR + "\\ktr";
private static final String KETTLE_PLUGIN_DIR = KETTLE_BASE_DIR + "\\plugins";
static { 

try { 

log.debug("加载Kettle插件");
StepPluginType.getInstance().getPluginFolders().add(new PluginFolder(KETTLE_PLUGIN_DIR, false, true));
log.debug("Kettle插件加载成功");
log.debug("初始化Kettle插件环境");
KettleEnvironment.init();
log.debug("Kettle插件环境初始化完成");
} catch (KettleException e) { 

log.error("Kettle插件加载初始化失败");
}
}
/** * 调用Kettle插件执行KTR文件 * * @param ktrName 目标KTR文件名称 * @param params KTR文件所需要的参数信息 * * @return void * @date 2020/3/24 16:31 */
public static void runKtr(String ktrName, Map<String, String> params) { 

KettleLoggingEventListener listener = null;
try { 

log.debug("开始执行Kettler任务");
log.debug("创建TransMeta源数据对象");
TransMeta transMeta = new TransMeta(KETTLE_KET_DIR + "\\" + ktrName);
log.debug("传入KTR文件所需要的参数值");
if (null != params) { 

for (Map.Entry<String, String> entry : params.entrySet()) { 

transMeta.setVariable(entry.getKey(), entry.getValue());
}
}
Trans transformation = new Trans(transMeta);
log.debug("设置Kettle日志级别");
transformation.setLogLevel(LogLevel.BASIC);
log.debug("创建日志监听程序");
listener = new ConsoleLoggingEventListener();
KettleLogStore.getAppender().addLoggingEventListener(listener);
log.debug("开始执行Kettle文件");
transformation.prepareExecution(null);
transformation.startThreads();
log.debug("等待Kettle执行完成");
transformation.waitUntilFinished();
if (transformation.getErrors() > 0) { 

log.error("Kettle执行过程中发生异常");
throw new RuntimeException("Kettle执行过程中发生异常,请查看日志信息");
} else { 

log.debug("Kettle执行成功");
}
} catch (Exception e) { 

log.error("Kettle执行失败", e);
} finally { 

if(null != listener){ 

KettleLogStore.getAppender().removeLoggingEventListener(listener);
}
log.debug("Kettle执行结束");
}
}
/** * 调用Kettle执行作业文件 * * @methodname runJob * @param kjbName 作业文件名称 * @param params 作业参数 * * @return void * @date 2020/3/24 18:33 */
public static void runJob(String kjbName, Map<String, String> params) throws Exception { 

KettleLoggingEventListener kettlelog = null;
try { 

log.debug("开始执行Kettle任务");
log.debug("创建Job的源数据对象");
JobMeta jobMeta = new JobMeta(KETTLE_KET_DIR + "\\" + kjbName, null);
log.debug("创建Job对象");
Job job = new Job(null, jobMeta);
log.debug("传入作业执行需要的参数");
if (null != params) { 

for (Map.Entry<String, String> entry : params.entrySet()) { 

job.setVariable(entry.getKey(), entry.getValue());
}
}
log.debug("设置Kettle日志级别");
job.setLogLevel(LogLevel.BASIC);
log.debug("创建日志监听程序");
kettlelog = new ConsoleLoggingEventListener();
KettleLogStore.getAppender().addLoggingEventListener(kettlelog);
log.debug("开始执行Job");
job.start();
log.debug("等待Job执行完成");
job.waitUntilFinished();
job.setFinished(true);
if (job.getErrors() > 0) { 

log.error("Job执行过程中发生异常");
throw new RuntimeException("Job执行过程中发生异常,请查看日志信息");
} else { 

log.debug("Job执行成功");
}
} catch (Exception e) { 

log.error("Kettle执行失败", e);
} finally { 

if(null != kettlelog ){ 

KettleLogStore.getAppender().removeLoggingEventListener(listener);
}
log.debug("Kettle执行结束");
}
}
}

对于日志监听器需要注意的地方,日志监听器不针对某一个执行过程,如果并发执行Kettle时,每一个执行过程都会输出到所有的日志监听器中。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/181330.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 网站加载速度优化的14个技巧

    网站加载速度优化的14个技巧

    2021年10月14日
  • 女生会java找什么工作吗_还在说女生不适合学java? 其实女生学java更有优势, 而且更容易找到工作!…

    女生会java找什么工作吗_还在说女生不适合学java? 其实女生学java更有优势, 而且更容易找到工作!…女生适合学java吗?女生做IT怎么样首先要表明我的观点,编程是不分男女,什么女生不适合学编程的说法,从客观上来说,我觉得这是一种偏见。不少人潜意识里认为女生不适合从事IT岗位的工作,因为他们觉得这些岗位对逻辑性的要求很好,而且要具备一定的操作水平,而女生在这方面比较薄弱。实际上,女生从Java的工作,很多时候能做得比男生更好。为什么说女生比男生更能学好java呢?1、女生往往比男生更细心,我认为…

  • idea永2021.2激活码破解方法

    idea永2021.2激活码破解方法,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • mac idea2021永久激活码【中文破解版】

    (mac idea2021永久激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

  • RTSP协议解析_RTP协议

    RTSP协议解析_RTP协议RTSP被用于建立的控制媒体流的传输,它为多媒体服务扮演“网络远程控制”的角色。尽管有时可以把RTSP控制信息和媒体数据流交织在一起传送,但一般情况RTSP本身并不用于转送媒体流数据。媒体数据的传送可通过RTP/RTCP等协议来完成。一次基本的RTSP操作过程是:首先,客户端连接到流服务器并发送一个RTSP描述命令(DESCRIBE)。流服务器通过一个SDP描述来进行反馈,反馈信息包括流数

  • git查看分支图_git分支代码

    git查看分支图_git分支代码gitlog–oneline–graph–decorate–all–oneline 日志单行显示–graph 分支图显示–decorate 可显示分支名称–all 显示所有分支

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号