我有一台运行Pentaho BI server v6 Community Edition的服务器。我们开发了一个Kettle作业,从一个数据库中提取到另一个数据库,导出为KJB文件。我想每隔12个小时就做一次这个工作。
我注意到BI服务器已经包含了Kettle,并且能够上传和安排作业。如果BI服务器已经安装了Kettle,我是否需要安装DI服务器?
如果没有,我如何将KJB文件发布到BI服务器?我想使用文件系统存储库。如果我直接通过用户控制台上传文件,则日志显示导入成功,但我无法在任何地方选择或运行该作业。
答案 0 :(得分:4)
我使用的是Pentaho BI服务器5,但它应该在Pentaho BI 6上运行相同。
我的Kettle工作运行了许多子转换。转换文件存储在文件系统目录中,例如/opt/etl
。
所以我想说我有一份工作(daily_job.kjb
)有两个子转换。
要在Kettle job
上运行Pentaho BI CE
我会使用以下步骤:
/opt/etl
)xaction
文件,该文件在BI服务器上执行Kettle job
(daily.xaction
)daily.xaction
和daily_job.kjb
个文件上传到Pentaho BI服务器(同一文件夹)daily.xaction
文件 daily_job.kjb
中的作业设置:
Xaction代码daily.xaction
(只是它在BI服务器中的相同文件夹中执行daily_job.kjb
与xaction
所在的位置):
<?xml version="1.0" encoding="UTF-8"?>
<action-sequence>
<title>My scheduled job</title>
<version>1</version>
<logging-level>ERROR</logging-level>
<documentation>
<author>mzy</author>
<description>Sequence for running daily job.</description>
<help/>
<result-type/>
<icon/>
</documentation>
<inputs>
</inputs>
<outputs>
<logResult type="string">
<destinations>
<response>content</response>
</destinations>
</logResult>
</outputs>
<resources>
<job-file>
<solution-file>
<location>daily_job.kjb</location>
<mime-type>text/xml</mime-type>
</solution-file>
</job-file>
</resources>
<actions>
<action-definition>
<component-name>KettleComponent</component-name>
<action-type>Pentaho Data Integration Job</action-type>
<action-inputs>
</action-inputs>
<action-resources>
<job-file type="resource"/>
</action-resources>
<action-outputs>
<kettle-execution-log type="string" mapping="logResult"/>
<kettle-execution-status type="string" mapping="statusResult"/>
</action-outputs>
<component-definition>
<kettle-logging-level><![CDATA[info]]></kettle-logging-level>
</component-definition>
</action-definition>
</actions>
</action-sequence>
在Pentaho BI CE上安排Kettle作业(xaction文件):
答案 1 :(得分:0)
您可以将.kjb文件部署为Kettle端点作为Sparkl插件的一部分,然后使用简单的API请求调用它。这应该有所帮助:
http://fcorti.com/pentaho-sparkl/kettle-endpoint-sparkl-pentaho/
可能有其他方法可以做到这一点,但这是我最熟悉的方法。至于调度,你可以只安排一个发出API请求的cronjob吗?