him*_*shu 2 shell hadoop hive oozie
基于条件为真我在shell脚本中执行hive -e.它工作正常.当我在Oozie中将此脚本放入Shell操作并运行时,我得到一个scriptName.sh:第42行:hive:命令未找到异常.
我尝试在shell动作中传递<env-var> PATH =/usr/lib/hive </ env-var>,但我想我在那里犯了一些错误,因为我得到了同样的错误scriptName.sh:第42行:hive:找不到命令
编辑:
我which hive在shell脚本中使用过.它的输出不一致.我得到两个输出变量:
1./usr/bin/hive以及Delegation token can be issued only with kerberos or web authenticationJava IOException."
2.which : hive not in {.:/sbin:/usr/bin:/usr/sbin:...}
好吧最后我想出来了.对于壳牌专家来说可能是一件微不足道的事情,但可以帮助有人出发.
1. hive:命令未找到 它不是类路径问题.这是一个shell问题.我运行的环境是一个korn shell(echo $ SHELL找出来).但是hive脚本(/usr/lib/hive/bin/hive.sh)是一个bash shell.所以我在我的脚本中更改了shebang(#!/ bin/bash)并且它有效.
2.Delegation Token只能用kerberos或web身份验证发布.
在我的hive脚本中,我添加了SET mapreduce.job.credentials.binary = ${HADOOP_TOKEN_FILE_LOCATION}HADOOP_TOKEN_FILE_LOCATION是一个保存jobToken位置的变量.需要传递此令牌,以便在安全集群中验证对HDFS数据的访问(在我的情况下,通过Hive Select查询进行HDFS读取操作).了解有关授权令牌的更多信息.