bash 中未找到 spark-submit

bash 中未找到 spark-submit

我有一个计划任务在启动时运行脚本,我使用以下命令创建该脚本crontab -e

@reboot /home/ubuntu/startup.sh > /home/ubuntu/log.log 2>&1

我的startup.sh脚本包含:

#!/bin/bash

...
bash /home/ubuntu/ec2-script.sh

并且我的ec2-script.sh包含:

spark-submit

但我得到了spark-submit: command not found。如果我从终端尝试,它工作得很好。但当脚本运行时启动,无法找到spark-submit命令。我也尝试将 sleep 也放进去,这样 spark 就可以正常启动,但没用。如果有人指出哪里出了错或缺了什么,那将非常有帮助。

答案1

您必须使用 spark-submit 的完整路径。

Cron 不会像在终端/bash 中那样设置环境。这意味着,除其他事项外,PATH(可执行文件的搜索路径)未设置。

您可以在 crontab 的第一行设置环境,例如:

PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
OTHERVAR=/some/thing

或者在您的脚本中。如果您在脚本中设置它们,则必须导出 PATH 和您设置的其他变量,以便在调用其他脚本或程序时将它们传递下去。

相关内容