从apache配置单元运行bash别名

ecfsfe2w  于 2021-05-30  发布在  Hadoop
关注(0)|答案(1)|浏览(322)

我试图在hadoop机器上创建一个别名,并从hivejvm运行它。当我从配置单元显式运行命令时!前缀它工作,但是当我添加别名,源代码.bashrc文件并从配置单元调用别名时,我得到一个错误。例子:
.bashrc内容:


# Environment variables required by hadoop

export JAVA_HOME=/usr/lib/jvm/java-7-oracle
export HADOOP_HOME_WARN_SUPPRESS=true
export HADOOP_HOME=/home/hadoop
export PATH=$PATH:/home/hadoop/bin

alias load-table='java -cp /home/hadoop/userlib/MyJar.jar  com.MyClass.TableLoader';

呼叫Hive:

!load-table;

输出:

Exception raised from Shell command Cannot run program "load-table": error=2, No such file or directory
uidvcgyl

uidvcgyl1#

与shell函数相比,别名有几个限制(例如,默认情况下,不能从非交互式shell调用别名)。
在您的 ~/.bashrc :

function load-table() {
    # Make sure the java executable is accessible
    if which java > /dev/null 2>&1; then
        java -cp /home/hadoop/userlib/MyJar.jar com.MyClass.TableLoader
    else
        echo "java not found! Check your PATH!"
    fi
}
export -f load-table # to export the function (BASH specific)

你的消息来源 .bashrc 应用更改。然后,打电话 load-table .

相关问题