我正在以客户机模式运行spark作业。我在unix脚本中使用spark submit命令运行这些作业。我想有日志为每个Spark作业运行。我尝试使用以下命令获取日志:
spark-submit --master yarn --deploy-mode client --num-executors 10 --executor-memory 2G --driver-memory 2G --jars $spark_jars --class $spark_class $main_jar |& tee -a ${log_file}
但是如果spark作业失败,它将不会在命令状态检查中被捕获,可能是unix检查|$tee命令的状态,无论spark作业成功还是失败,它都是success
if [ $? -eq 0 ]; then
echo "===========SPARK JOB COMPLETED==================" |& tee -a ${log_file}
else
echo "===========SPARK JOB FAILED=====================" |& tee -a ${log_file}
fi
我尝试使用log4j,但没有成功。我希望每个spark作业日志文件都存储在本地unix服务器上。请帮忙!!
1条答案
按热度按时间svdrlsy41#
一旦你提交你的spark申请。它会产生一个
application_id
. 由于此应用程序正在分布式集群中运行,因此无法通过重定向获取spark应用程序的日志。然而,当您执行下面的操作时,它只是重定向控制台登录到一个文件中。
例如,要获取提交给yarn cluster的spark应用程序的日志,需要使用yarn logs命令:
yarn logs -applicationId <application ID> [OPTIONS]