2

在 oozie 中可能有这样的事情吗?

hive -f hiveScript.hql > output.txt

对于上述代码,我有以下 oozie hive 操作,如下所示:

    <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>

我怎样才能告诉脚本输出应该去哪里?

4

1 回答 1

3

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.

于 2015-06-26T14:34:20.927 回答