在这篇博文中,我将描述如何在sapdatahub管道中使用流程执行器来运行Java应用程序。本教程假设您具备使用SAP Data Hub Modeler的基本知识。所有代码片段都可以在Github上找到。
某些上下文…
SAP Data Hub管道提供了一种非常灵活的技术,用于创建由可重用和可配置的运算符组成的基于流的应用程序。在一组内置操作符中,有一类处理操作符允许执行用不同编程语言(如Javascript、Python、Go和R)编写的程序。但是,它并不止于此。不支持开箱即用的编程语言编写的应用程序也可以使用命令执行器或进程执行器操作符执行:
命令执行器对每次到达输入端口的消息执行给定的命令。到达消息通过标准输入提供。命令完成后,可以在输出端口上使用命令的标准输出。命令执行器适用于轻量应用程序,如ping,但不适用于启动时间长的富应用程序,因为每个到达操作员输入端口的消息都会启动一个进程。
进程执行器启动一个进程,并向其提供给定的连续流。当分叉进程终止时,操作符完成。写入标准输出或标准误差的数据在resp上可用。输出端口。Process Executor适用于丰富的应用程序,例如Java应用程序,因为流程只启动一次,然后每个消息都通过标准输入传递。
让我们开始吧…
在本教程中,大数据和云计算,我以Java应用程序为例。然而,同样的概念也可以应用于其他类型的应用程序。您所需要的只是一个从标准输入中连续读取并写入stdout或stderr的可执行文件,以及一个描述可执行文件所需运行时环境的Dockerfile,我们创建了一个简单的Java应用程序,它可以连续地从stdin读取字符串,大数据是干什么的,并计算字符串中的字符数,或者根据通过参数传递的配置值将字符串转换为大写字母。如果出现错误,低价的云服务器,每个操作的结果都会写入stdout或stderr。
src/com/sap/javaapplication/主类:
构建一个包含所有依赖项的jar,软件企业的认定,e、 g.Maven使用以下pom.xml文件:
通过点击Repository>Create Docker File来创建一个新的Dockerfile:
定义一个提供Java运行时环境的Dockerfile,例如使用官方打开的JDK映像作为基础:
Dockerfile:
用"Java"和版本"11"标记Dockerfile。选择标记以匹配后者在操作员中使用Dockerfile时,您的Dockerfile:
通过单击Repository>Create Operator创建新的自定义操作员:
定义您选择的名称和显示名称,并选择"Process Executor"作为基本操作员:
选择先前定义的标记名称和标记版本,以确保操作员在带有Java运行时的Docker容器:
添加一个名为"mode"、默认值为"length"的新参数在cmdLine参数值中提供启动Java应用程序的命令,并添加占位符${mode}作为参数。占位符将在运行时被为参数指定的值替换模式:java-jar/vrep/vflow/operators/examples/JavaProcessExecutor/JavaApplication.jar文件${mode}
向上滚动到Operator Configuration(操作员配置)部分,企业管理类软件,然后单击Auto Propose(自动建议)从可用参数生成操作员配置:
单击生成的操作员配置旁边的编辑按钮:
点击模式参数并按如下方式进行配置:
添加显示标题"模式"将模式切换到"必需"将值帮助设置为"预定义值"通过输入值并按Enter键添加两个值"Length"和"Upper":
单击OK。
通过Upload Auxiliary File上传已编译的Java应用程序:
单击Browse…选择文件,然后单击Send:
文件将被上传并放置在操作员文件夹内的存储库中:
单击保存保存运算符:
新建图形:
添加并连接以下类型的运算符:
数据生成器窃听StringToStream转换器StreamToString转换器JavaProcessExecutor
修改数据生成器操作符的脚本:
运行管道并打开间接连接到JavaProcessExecutor标准端口的Wiretap操作符的UI:
UI应该显示Java应用程序的字符串转换:
就是这样。
您可以在上面找到完整的代码示例Github公司https://github.com/SAP/datahub-integration-examples/tree/master/JavaProcessExecutor。