【发布时间】:2016-02-22 14:28:56
【问题描述】:
我有如下用例。 hive 中有一个表,其标志值为 1 或 0。使用 oozie 工作流中的 hive 操作读取此 hive 表并检索此标志值。如果此标志为 1,则调用 sqoop 操作,否则如果标志值为 0,则终止此工作流并出口。 如何从 hive 操作中获取 hive 查询的输出并将其用于 oozie 工作流决策制定。
【问题讨论】:
我有如下用例。 hive 中有一个表,其标志值为 1 或 0。使用 oozie 工作流中的 hive 操作读取此 hive 表并检索此标志值。如果此标志为 1,则调用 sqoop 操作,否则如果标志值为 0,则终止此工作流并出口。 如何从 hive 操作中获取 hive 查询的输出并将其用于 oozie 工作流决策制定。
【问题讨论】:
有两种方法可以做到这一点。
创建java action,通过jdbc直接连接hive,进行列值查找。
创建 Oozie shell 操作并在其中选择您的选择查询,例如“hive -e”,同时您需要在工作流程下使用 capture_output 选项,还需要指定系统属性 OOZIE_JAVA_MAIN_CAPTURE_OUTPUT_FILE="输出文件位置" 以便它可以捕获并将输出存储在文件中。现在您可以通过在您的 oozie 上下文中创建 oozie EL 函数来访问此文件内容。
请参阅此链接以获取 EL 功能示例:https://blog.cloudera.com/blog/2013/09/how-to-write-an-el-function-in-apache-oozie/
【讨论】: