如何在Pentaho BI server v6 CE上部署预定的Kettle作业

时间:2016-02-29 17:40:15

标签: pentaho kettle

我有一台运行Pentaho BI server v6 Community Edition的服务器。我们开发了一个Kettle作业,从一个数据库中提取到另一个数据库,导出为KJB文件。我想每隔12个小时就做一次这个工作。

我注意到BI服务器已经包含了Kettle,并且能够上传和安排作业。如果BI服务器已经安装了Kettle,我是否需要安装DI服务器?

如果没有,我如何将KJB文件发布到BI服务器?我想使用文件系统存储库。如果我直接通过用户控制台上传文件,则日志显示导入成功,但我无法在任何地方选择或运行该作业。

2 个答案:

答案 0 :(得分:4)

我使用的是Pentaho BI服务器5,但它应该在Pentaho BI 6上运行相同。

我的Kettle工作运行了许多子转换。转换文件存储在文件系统目录中,例如/opt/etl

所以我想说我有一份工作(daily_job.kjb)有两个子转换。

要在Kettle job上运行Pentaho BI CE我会使用以下步骤:

  1. 在作业文件中正确设置转换位置
  2. 将子转换上传到服务器上的正确目录(/opt/etl
  3. 创建xaction文件,该文件在BI服务器上执行Kettle jobdaily.xaction
  4. daily.xactiondaily_job.kjb个文件上传到Pentaho BI服务器(同一文件夹)
  5. 在Pentaho BI服务器上安排daily.xaction文件
  6. daily_job.kjb 中的作业设置:

    enter image description here

    Xaction代码daily.xaction (只是它在BI服务器中的相同文件夹中执行daily_job.kjbxaction所在的位置):

    <?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文件):

    enter image description here

答案 1 :(得分:0)

您可以将.kjb文件部署为Kettle端点作为Sparkl插件的一部分,然后使用简单的API请求调用它。这应该有所帮助:

http://fcorti.com/pentaho-sparkl/kettle-endpoint-sparkl-pentaho/

可能有其他方法可以做到这一点,但这是我最熟悉的方法。至于调度,你可以只安排一个发出API请求的cronjob吗?