kettle执行结果面板步骤度量(二)——作业

21 篇文章 6 订阅

楔子

java调用kettle,获取类似kettle界面执行结果面板步骤度量

在这里插入图片描述

代码

	/**
	 * 执行 JOB
	 * 
	 * @param repository
	 *            kettle数据库资源库
	 * @param job_path
	 *            JOB 目录
	 * @param job_name
	 *            JOB 名称
	 * @param variableMap
	 *            变量Map
	 * @throws KettleException
	 */
	public static boolean execJob(KettleDatabaseRepository repository, String job_path, String job_name, Map<String, Object> variableMap) throws KettleException {
		System.setProperty("KETTLE_DEFAULT_SERVLET_ENCODING", StandardCharsets.UTF_8.name());
		RepositoryDirectoryInterface dir = repository.findDirectory(job_path);
		JobMeta jobMeta = repository.loadJob(repository.getJobId(job_name, dir), null);
		Job job = new Job(repository, jobMeta);
		// 设置参数无用,基本都是使用的是变量 而非参数
		job.setLogLevel(LogLevel.MINIMAL);
		// 设置变量 java代码中变量会覆盖kettle里面设置的变量
		if (variableMap != null) {
			Set<Entry<String, Object>> entrySet = variableMap.entrySet();
			for (Entry<String, Object> entry : entrySet) {
				job.setVariable(entry.getKey(), entry.getValue().toString());
			}
		}
		// 启动执行指定的job
		job.start();
		job.waitUntilFinished();// 等待job执行完
		job.setFinished(true);
		if (job.isFinished()) {
			List<JobEntryResult> jobEntryResults = job.getJobEntryResults();
			for (JobEntryResult jobEntryResult : jobEntryResults) {
				System.out.println("执行步骤=" + jobEntryResult.getJobEntryName() + ",执行状态=" + jobEntryResult.getResult().getResult());
			}

		}
		// 执行 打印的日志 等全在这个xml中
		System.out.println("------------------------------------------------------------");
		job.getResult().getBasicXml();
		System.out.println(job.getResult().getLogText());
		return job.getResult().getResult();
	}


日志信息

job.getResult().getLogText() 里面可以获取如下日志信息

2018/11/04 03:04:11 - A_转换 - 为了转换解除补丁开始  [A_转换]
2018/11/04 03:04:11 - A_转换 - 已经找到的参数数量:0 
2018/11/04 03:04:11 - A_转换 - 这没有一个重放的转换
2018/11/04 03:04:11 - A_转换 - 我找到 2 个不同的要执行的步骤.
2018/11/04 03:04:11 - A_转换 - 分派记录集...
2018/11/04 03:04:11 - A_转换 -  正在分配行组为步骤 0 --> A_元数据
2018/11/04 03:04:11 - A_转换 -   前一个副本 = 1, 下一个副本=1
2018/11/04 03:04:11 - A_转换 - 转换分配了新的行组 [A_元数据.0 - A_数据输出.0]
2018/11/04 03:04:11 - A_转换 -  已分配 1 行组为步骤 0 --> A_元数据  
2018/11/04 03:04:11 - A_转换 -  正在分配行组为步骤 1 --> A_数据输出
2018/11/04 03:04:11 - A_转换 -  已分配 1 行组为步骤 1 --> A_数据输出  
2018/11/04 03:04:11 - A_转换 - 正在分配步骤和步骤数据...
2018/11/04 03:04:11 - A_转换 -  转换大约分配了 步骤 [A_元数据] 类型的 [TableInput]
2018/11/04 03:04:11 - A_转换 -   步骤已经有了副本=1
2018/11/04 03:04:11 - A_元数据.0 - 分散被激活
2018/11/04 03:04:11 - A_元数据.0 - Starting allocation of buffers & new threads...
2018/11/04 03:04:11 - A_元数据.0 - 步骤信息: 输入数量=0 输出数量=1
2018/11/04 03:04:11 - A_元数据.0 - output rel. is  1:1
2018/11/04 03:04:11 - A_元数据.0 - 发现输出 rowset [A_元数据.0 - A_数据输出.0]
2018/11/04 03:04:11 - A_元数据.0 - 完成分发
2018/11/04 03:04:11 - A_转换 -  转换已经分配了一个新的步骤: [A_元数据].0
2018/11/04 03:04:11 - A_转换 -  转换大约分配了 步骤 [A_数据输出] 类型的 [TableOutput]
2018/11/04 03:04:11 - A_转换 -   步骤已经有了副本=1
2018/11/04 03:04:11 - A_数据输出.0 - 分散被激活
2018/11/04 03:04:11 - A_数据输出.0 - Starting allocation of buffers & new threads...
2018/11/04 03:04:11 - A_数据输出.0 - 步骤信息: 输入数量=1 输出数量=0
2018/11/04 03:04:11 - A_数据输出.0 - 获取来自前一步骤 [A_数据输出] #0 --> A_元数据
2018/11/04 03:04:11 - A_数据输出.0 - input rel is 1:1
2018/11/04 03:04:11 - A_数据输出.0 - 发现输入记录集合 [A_元数据.0 - A_数据输出.0]
2018/11/04 03:04:11 - A_数据输出.0 - 完成分发
2018/11/04 03:04:11 - A_转换 -  转换已经分配了一个新的步骤: [A_数据输出].0
2018/11/04 03:04:11 - A_转换 - 这项转换可以被回放 回放日期是: 2018/11/04 03:04:11
2018/11/04 03:04:11 - A_转换 - 正在初始化 2 步骤...
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值