如何运行pyspark脚本时不在窗口显示运行过程且将日志存入文件
Spark提交日志全量写入文件不输出到终端的实现方案
问题根因
原命令的重定向语法错误,2>&1 test.logs 未指定标准输出的重定向符号,系统会将test.logs识别为spark-submit的传入参数而非日志输出目标,因此标准错误合并到标准输出后依然直接打印到终端。
正确实现方法
1. 前台运行,终端无输出,日志全量写入文件
调整重定向顺序即可,命令如下:
spark-submit --driver-memory=32g --executor-memory=32g test.py teo > test.logs 2>&1
> test.logs:将标准输出(stdout,文件描述符1)重定向写入test.logs文件2>&1:将标准错误(stderr,文件描述符2)重定向到和标准输出相同的位置,两类日志统一写入目标文件,不会在终端打印
注意:重定向顺序不能调换,2>&1必须放在输出文件配置的后面,否则无法正确合并两类日志
2. 后台运行(关闭终端进程不终止),日志全量写入文件
如果需要任务后台挂起运行,无需保持终端开启,使用如下命令:
nohup spark-submit --driver-memory=32g --executor-memory=32g test.py teo > test.logs 2>&1 &
- 末尾的
&表示将任务放到后台执行 nohup用于忽略终端的挂断信号,避免关闭终端后任务被系统终止
内容的提问来源于stack exchange,提问作者DrGenius
相关产品推荐
相关产品推荐

