如何在 Pentaho BI server v6 CE 上部署预定的 Kettle 作业
Posted
技术标签:
【中文标题】如何在 Pentaho BI server v6 CE 上部署预定的 Kettle 作业【英文标题】:How to deploy scheduled Kettle jobs on Pentaho BI server v6 CE 【发布时间】:2016-02-29 17:40:15 【问题描述】:我有一台运行 Pentaho BI server v6 Community Edition 的服务器。我们开发了一个 Kettle 作业,可以从一个数据库提取到另一个数据库,导出为 KJB 文件。我想每 12 个小时左右运行一次这项工作。
我注意到 BI 服务器已经包含了 Kettle,并且能够上传和安排作业。如果 BI 服务器已经安装了 Kettle,还需要安装 DI 服务器吗?
如果没有,如何将 KJB 文件发布到 BI 服务器?我想使用文件系统存储库。如果我直接通过用户控制台上传文件,日志显示导入成功,但我无法在任何地方选择或运行该作业。
【问题讨论】:
【参考方案1】:我使用的是 Pentaho BI server 5,但它应该在 Pentaho BI 6 上工作。
我的 Kettle 作业运行许多子转换。转换文件存储在文件系统目录中,例如/opt/etl
.
假设我有一份工作 (daily_job.kjb
) 有两个子转换。
要在 Pentaho BI CE
上运行 Kettle job
,我使用以下步骤:
-
在作业文件中正确设置转换位置
将子转换上传到服务器上的正确目录 (
/opt/etl
)
创建在 BI 服务器 (daily.xaction
) 上执行 Kettle job
的 xaction
文件
将daily.xaction
和daily_job.kjb
文件上传到Pentaho BI 服务器(同一文件夹)
在 Pentaho BI 服务器上调度 daily.xaction
文件
daily_job.kjb
中的工作设置:
Xaction 代码daily.xaction
(只需执行daily_job.kjb
,它位于与xaction
所在的BI 服务器相同的文件夹):
<?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 文件):
【讨论】:
工作!!要查看上传的作业,请单击查看 > 显示隐藏文件。 如果我想将转换也上传到pentaho服务器,在文件.kjb和.xaction的同一目录中,我必须如何在.kjb文件中配置子转换的路径位置?另外:如果转换的输出是一个文件,是否可以通过设置正确的输出路径位置将其自动发布到 pentaho 服务器文件夹中?我问这个是因为就安全性而言,在 tomcat 目录之外的文件夹中读取和写入文件并不是最佳实践。【参考方案2】:继续以下步骤:
-
以管理员身份启动 pentaho bi 服务器后登录 pentaho 控制台:
-
单击浏览文件按钮,将打开一个新页面。在此页面中,选择文件夹部分下的文件夹,然后单击右侧窗格中的上传。
-
选择一个文件并点击确定。
现在刷新页面,然后文件将反映在您各自的文件夹中。
现在安排作业。单击左窗格中的相应文件夹,在中间窗格中选择您的主要作业文件,然后单击右窗格中的计划。
在新的弹出窗口中,选择您生成的文件路径,然后单击下一步。选择重复计划、作业时间和作业开始日期。
在下一个弹出窗口中选择“是”,您将被重定向到“管理计划”页面,您可以在其中看到您刚刚安排的工作。它将按计划时间运行。
您可以在 pentaho-server/tomcat/logs 目录下的 pentaho.log 文件中查看您的作业日志:
tail -1000f /Users/kv/pentaho-server/tomcat/logs/pentaho.log
【讨论】:
【参考方案3】:您可以将 .kjb 文件部署为作为 Sparkl 插件的一部分的 Kettle 端点,然后通过简单的 API 请求调用它。这应该会有所帮助:
http://fcorti.com/pentaho-sparkl/kettle-endpoint-sparkl-pentaho/
可能还有其他方法可以做到这一点,但这是我最熟悉的一种。至于调度,你可以只调度一个发出 API 请求的 cronjob 吗?
【讨论】:
您能否提供一些代码来回答您的问题,而不是简单地链接到外部资源? 你真的不需要写任何代码。只需创建一个名为“JobRunner”的 sparkl 插件,然后创建一个“job”类型的kettle 端点(例如,名为 myJob)。该插件将自动在以上是关于如何在 Pentaho BI server v6 CE 上部署预定的 Kettle 作业的主要内容,如果未能解决你的问题,请参考以下文章
Pentaho BI Server 5.0.1 有 Saiku Reporting 插件吗?
我需要在我的服务器上的同一个 Tomcat 7 中运行 Pentaho CE BI-Server 和 Geoserver