我有一个Azure HD Insights群集,我正在使用beeline客户端从可移除的Unix服务器进行连接。我确实有该连接的JDBC连接详细信息,并且可以使用以下命令执行Hive查询:
beeline -u 'jdbc:hive2://clustername.azurehdinsight.net:443/;ssl=true;transportMode=http;httpPath=/hive2' -n admin -p '<password>' -e "select 'abc';"
我也有在同一台Unix机器上运行的Azkaban Exec服务器和Azkaban Web服务器。 现在,我有一个Azkaban作业,该作业基本上使用以下配置运行shell脚本:
# test2.job
type=command
command =sh ./echo_ys.sh
echo_ys.sh与上面的beeline命令基本相同。
如果我从unix运行以下sh脚本
./echo_ys.sh
它能够成功运行Hive命令。
但是我尝试对Azkaban做同样的事情,它说不能
./echo_ys.sh: line 8: beeline: command not found
所以我更新了我的sh文件,以提供beeline的完整路径,这使我的命令看起来像
/opt/apache-hive-1.2.1-bin/bin/beeline -u 'jdbc:hive2://clustername.azurehdinsight.net:443/;ssl=true;transportMode=http;httpPath=/hive2' -n admin -p '<password>' -e "select 'abc';"
现在出现错误:找不到hadoop安装:必须设置$ HADOOP_HOME或$ HADOOP_PREFIX或hadoop必须在路径中
我尝试在作业中创建一个具有以下参数的.properties文件:
env.HADOOP_HOME="/opt/hadoop-2.7.3"
HADOOP_HOME=/opt/hadoop-2.7.3
还尝试设置流参数hadoop.home = /opt/hadoop-2.7.3 但无济于事。
感谢您的帮助。