1. 概述编辑
1.1 版本说明
FineDataLink 版本 | 功能变动 |
---|---|
4.0.8 | - |
1.2 应用场景
用户希望在 FineDataLink 中调用Kettle任务、调用Python计算任务、Java程序/Spark程序,或者进行数据库备份还原等操作。
1.3 功能说明
FineDataLink 支持通过执行 Shell 脚本,对接外部的独立数据处理过程。
例如SVN更新、文件运维清理、调用Kettle任务、调用Python计算任务、调用Spark计算任务、执行数据库备份还原等。
同时支持使用在脚本中使用 FineDataLink 中设置的参数。
2. 使用限制编辑
仅支持调用 Linux 系统下后缀名为.sh的脚本文件。
3. 前提条件编辑
由于需要在目标服务器执行指定Shell脚本,因此需要首先通过 SSH 远程连接至目标服务器。
配置 SSH 数据连接步骤请参见:配置SSH协议数据连接
4. 操作示例编辑
示例任务可参见:https://demo.finedatalink.com/
例如某shell脚本如下图所示:
其中$0:指所写的shell脚本本身的名字;$1、$2、$3分别为写入的三个参数(三个参数将在 FineDataLink 中进行赋值)。
执行脚本后,最终会输出三个参数值:参数一:存储在fine_apple数据表中的指定位置数据(kettle);参数二:当前任务运行时间;参数三:手动赋值b3,如下图所示:
4.1 设置参数
由于第一个参数$1存储在数据表中,我们使用参数赋值取出。
首先新建「参数赋值」节点,从 数据表中取出需要使用的数据(例如这里取出kettle)作为参数,如下图所示:
fine_apple 数据表如下:
第二个和第三个参数$2、$3 直接使用参数设置,如下图所示:
4.2 设置 Shell 脚本
新建 Shell 脚本,将参数赋值节点和脚本连接,选择需要远程执行任务的目标服务器 SSH 连接位置,写入脚本路径,然后设置脚本参数,点击添加参数,将 3.1 节设置参数 b1、b2、b3 添加至脚本参数中,如下图所示:
注1:脚本参数传入脚本的顺序默认按照序号自上而下。
注2:如果 Shell 脚本在循环容器中使用到其遍历使用的参数时,取到的参数值为遍历过程中的值。
脚本配置项如下所示:
配置项 | 说明 |
---|---|
SSH连接 | 下拉所有可选的SSH连接。 |
脚本路径 | 填写SSH目标端要执行的Shell脚本完整路径。 注1:仅支持Linux系统下后缀名为.sh的脚本文件。 注2:支持引用参数,引用参数示例如下 |
脚本参数 | 指定传递给脚本的参数。 注1:脚本参数传入脚本的顺序按照序号自上而下。 注2:参数中不能带有单引号,若参数确实需要带有单引号时,通过自定义Shell脚本内的参数使用逻辑来替代实现。 注3:不允许出现未配置的脚本参数项。 |
执行超时配置 | 脚本开始执行到完全执行完毕的超时时间。
|
字符编码 | 指定输出字符编码。 支持设置编码格式:
|
4.3 执行任务
点击「保存并运行」,即可执行任务,如下图所示:
执行任务后,即可在脚本设置的输出文件中看到输出结果,即输出了三个参数,如下图所示:
5. 如何判断脚本执行成功编辑
详情参见:Shell脚本执行结果说明
6. 后续操作编辑
7. 注意事项编辑
7.1 文件格式问题
7.1.1问题描述
如果脚本文件执行时有类似如下报错:/bin/sh:command not found
7.1.2 解决方案
可能是因为文件格式为 Windows 格式,因此需要在 notepad++编译器中转换成 unix 格式,如下图所示:
或者在 Linux 系统中使用vim 文档名命令打开文档,输入:set fileformat=unix或者是:set ff=unix,然后输入:wq保存。
7.2 No JVM Shared library file(libjvm.so) found
7.2.1 问题描述
脚本文件执行时有类似如下报错:
7.2.2 解决方案
环境变量需要定义在~/.bashrc中,如果定义在/etc/profile中的话shell脚本读取不到,因此需要在shell脚本中先执行source /etc/profile