java获取屏幕pdi_如何从Java运行基于PDI的ETL
java获取屏幕pdi
企业级BI解决方案由多个组件组成。 您具有报告工具,ETL流程,数据库以及通常的某种Web门户,所有这些都应正确集成。 ETL通常是一个计划的过程,但是我们经常希望允许业务用户手动启动它。 实现此目标的最佳方法是通过我们在Web门户中构建的一些简单界面–这样,他们无需了解其底层的基础结构,并且我们可以处理用户管理,访问等。 Java程序中的ETL,我将介绍它们的优点和缺点。
最简单的方法–运行外部进程
那将是最简单的方法,即使它看起来并不酷,但它仍然有效,这才是最重要的。 它可以像这样简单:
您可以通过运行到单独的线程中进行扩展,使其可配置,从而使其不依赖于平台,读取输出等。需要在运行的计算机上安装PDI。 该方法的主要缺点是ETL在JVM内运行,这可能会减慢Web门户的速度。 如果满足我的要求,我不会介意使用该方法-例如,业务用户需要运行一些小的转换,并且不需要太多时间和资源。
更酷的方法–使用PDI库
Pentaho提供Java库,使我们能够将作业和转换直接集成和执行到我们的Java代码中。 我将通过一个简单的示例进行说明,该示例使用maven获取所需的库,然后执行一个简单的作业。
- 首先依赖
- 然后我们可以从代码中使用嵌入式水壶环境:
我之所以称其为“很酷的方法”,是因为根据我在一家定制软件开发公司中的工作经验,它为我们提供了对作业执行的更多控制权。 我们可以从存储库中读取作业,设置参数,读取输出参数,监视日志等。它基本上是我们应用程序中的嵌入式厨房。 这里的可能性是无限的-我们甚至可以使用PDI转换来处理应用程序中的某些业务逻辑。 上一个示例中的缺点是执行在JVM内部,如果这是我们的Web门户,那么过多的负载可能会导致问题。 在这里,我们不需要在运行的计算机中预先安装PDI,但是这些库将打包在应用程序中,这将使可分发的文件更大。
将前两种方法提升到另一个层次
这些方法的好处是它们驻留在我们的Java代码中,这当然意味着我们可以用该代码做任何我们想做的事情,并以我们需要的任何方式对其进行扩展。 这是显而易见的,但是我仍然想提及它,因为它使我们可以轻松地解决问题并避免缺点。 因此,例如,我们在此处看到的最大缺点是,这些操作是在JVM中执行的,并且可以加载Web服务器。 使用我们企业应用程序的一些更好的体系结构,我们可以轻松地将该执行转移到JVM的另一个实例(另一个服务器)上,甚至可以将其负载均衡到其他服务器上。 一个简单的解决方案是创建一个单独的Web服务,该服务执行ETL并从Web门户中调用该ETL。 另一种方法是使用消息传递服务并创建使用上述某些方法执行Jobs的侦听器。 这看起来像:
企业方式–无需编写代码
PDI带有一个称为Carte的工具,该工具基本上为pentaho服务器提供Web服务接口,使我们可以远程执行作业。 运行它非常简单–在data-integration / pwd文件夹中,您具有服务器的一些基本配置XML,并且有很好的文档说明了如何根据需要进行配置。 它还需要为作业设置存储库。 一旦运行,就可以通过简单的Web界面对其进行访问。
要执行工作,您可以打以下电话:
http://carte.server:8080 / kettle / runJob /?job = MY_JOB_ON_THE_REPSITORY&level = Debug
此方法允许在服务器上远程执行,因此不会遭受前两种方法的主要缺点的困扰。 如果您运行耗时数小时的复杂ETL,并且需要在不同的计算机和服务器上运行,那么应该采用这种方法。
结论
有多种方法可以通过Java代码执行我们的PDI作业。 我只讲了三个,但可能还有更多。 对于企业应用程序,大多数人应该选择企业方式,因为它是最健壮的,而且一旦设置就可能最容易使用。 它确实使基础架构更加复杂–您需要服务器,存储库,其某些高级功能甚至需要PDI企业版。 在某些情况下,其他两种方法也可以正常工作,因此请为您的应用选择最佳方案!
翻译自: https://jaxenter.com/run-pdi-based-etl-java-154655.html
java获取屏幕pdi