内容纲要
概要描述
本文主要描述如何在 Workflow 中调度 beeline 执行 SQL 任务。适用的 Workflow 版本为 TDH 5.x 、TDH 6.x 及 Studio 1.x 。不适用于 TDS 2.x 及以上。
详细说明
使用场景
在 Workflow 的 SQL 任务算子无法满足 SQL 任务的要求(常见的情况有因 SQL 语句长度太长导致无法保存工作流等)时,可以考虑使用 beeline 脚本任务的形式执行SQL。
操作步骤
在所有 Workflow 节点的共享目录中部署 TDH Client
在 Manager 页面,点击 管理 > 下载客户端,下载 tdh-client.tar 客户端。
然后放置在所有 Workflow Server 节点的/etc/workflow{服务编号}/conf
目录下。
解压客户端文件。
tar xvf tdh-client.tar
如果 Workflow 部署在了多个节点,则每个节点都需要放置和解压。
放置 SQL 脚本文件并测试
将想执行的 SQL 放到文件中,并放置在所有 Workflow Server 节点的/etc/workflow{服务编号}/conf
目录下,例如文件名为test_sql.sql
。
如果 Workflow 部署在了多个节点,则每个节点都需要放置。
执行以下命令测试 SQL 能否执行。
source TDH-Client/init.sh
beeline -u jdbc:hive2://{Inceptor Server IP}:10000/{Database Name} -n {username} -p {password} -f {SQL file name}
需要根据实际情况修改第二句命令中的参数值,如果没有异常则应能正常执行完毕。
如果执行有报错,则需要先将脚本调通,否则也无法在 Workflow 中调度执行。
在任务流中添加脚本任务
创建一个新的任务流,左侧添加一个脚本任务。
脚本内容如下:
cd /etc/workflow{服务编号}/conf
source TDH-Client/init.sh
/etc/workflow1/conf/TDH-Client/inceptor/bin/beeline -u jdbc:hive2://{Inceptor Server IP}:10000/{Database Name} -n {username} -p {password} -f {SQL file name}
需要根据实际情况修改命令中的参数值。
保存。再点击调试模式 > 执行工作流进行测试。
正常调试通过后,就可以设置调度周期发布调度了。
FAQ
- 在 Workflow 节点后台执行成功,但在 Workflow 任务流中调试或调度报错:
Missing Hive Execution Jar: /etc/workflow1/conf/TDH-Client/inceptor/lib/hive-exec-*.jar
这种情况需要在任务流的脚本设置中,将脚本内容中的 beeline 命令修改成绝对路径。