我正在用纱客户端模式运行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作业成功还是失败,该状态始终是成功的
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服务器上。 请帮忙!!
答案 0 :(得分:0)
提交火花申请后。它生成一个application_id
。由于此应用程序在分布式集群中运行,因此无法获取带有重定向的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 > ${log_file}
例如,要获取提交到纱线群集的spark应用程序的日志记录,您需要使用yarn logs命令:
yarn logs -applicationId <application ID> [OPTIONS]