我有一个shell的脚本,例子.sh。
hive -e "select max(id) from dummy.table;" > data.txt
hdfs dfs -put -f data.txt /user/username/data.txt
这个脚本从hive中获取数据,并将结果存储在hdfs中。在终端中,这个脚本和预期的一样工作,但是当我创建一个oozie工作流时,创建的文件是空的。
insert overwrite directory '/user/username/hiveData' select max(id) from dummy.table;
但我的要求是,我必须在我的shell脚本中获取hive数据。
1条答案
按热度按时间jq6vz3qz1#
由于你没有检查
$?
,你可能不知道它失败了。所以第一步是在你的shell脚本中加入这一点,否则你不会知道shell脚本是否失败(因为hive失败),oozie会得到shell脚本的成功运行状态。所以在不知道hive代码失败的真正原因的情况下,我在做一个猜测。
如果你有 kerberos 认证,被 hive 使用,那么 hive 查询可能会在 oozie 调用的 shell 脚本中失败。为了解决 kerberos 问题,你可能需要做一些类似这样的事情。
你可以在这里读到更多的信息