这样的事情在oozie中可能发生吗?
hive -f hiveScript.hql > output.txt
我对上面的代码有如下的oozie蜂窝操作:
<hive xmlns="uri:oozie:hive-action:0.1">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<configuration>
<property>
<name>mapred.job.queue.name</name>
<value>${queueName}</value>
</property>
</configuration>
<script>hiveScript.hql</script>
</hive>
<ok to="end" />
<error to="kill" />
</hive>
如何告诉脚本输出应该放在哪里?
Oozie不可能以您想要的方式做到这一点。这是因为Oozie在集群中的节点上启动(大部分)工作流操作。
有了这个,你可以运行Oozie Shell操作来运行hive -f hiveScript.hql > output.txt
。。。然而,这有不同的含义,要求Hive到处都安装,hiveScript.hql到处都安装等等。另一种不太可行的方式是,你的输出文件将位于指定运行这个shell操作的任何节点上。https://oozie.apache.org/docs/3.3.0/DG_ShellActionExtension.html
我认为您最好将INSERT OVERWRITE DIRECTORY '/tmp/hdfs_out' SELECT * FROM ...
包含在hiveScript.hql文件中,然后从HDFS中提取结果。
编辑:我刚才想到的另一个选项是使用SSH操作。https://oozie.apache.org/docs/3.2.0-incubating/DG_SshActionExtension.html您可能将SSH Action shell连接到目标计算机并运行hive -f hiveScript.hql > output.txt
。