小编jar*_*ugh的帖子

AWS EMR Spark Python日志记录

我在AWS EMR上运行一个非常简单的Spark作业,似乎无法从我的脚本中获取任何日志输出.

我试过打印到stderr:

from pyspark import SparkContext
import sys

if __name__ == '__main__':
    sc = SparkContext(appName="HelloWorld")
    print('Hello, world!', file=sys.stderr)
    sc.stop()
Run Code Online (Sandbox Code Playgroud)

并采用火花记录器如图所示在这里:

from pyspark import SparkContext

if __name__ == '__main__':
    sc = SparkContext(appName="HelloWorld")

    log4jLogger = sc._jvm.org.apache.log4j
    logger = log4jLogger.LogManager.getLogger(__name__)
    logger.error('Hello, world!')

    sc.stop()
Run Code Online (Sandbox Code Playgroud)

作业运行后EMR给我两个日志文件:controllerstderr.两个日志都不包含"Hello, world!"字符串.这是我的理解,stdout重定向到stderr火花.该stderr日志显示作业被接受,运行和顺利完成.

所以我的问题是,我在哪里可以查看我的脚本的日志输出?或者我应该在脚本中更改什么才能正确记录?

编辑:我使用此命令提交步骤:

aws emr add-steps --region us-west-2 --cluster-id x-XXXXXXXXXXXXX --steps Type=spark,Name=HelloWorld,Args=[--deploy-mode,cluster,--master,yarn,--conf,spark.yarn.submit.waitAppCompletion=true,s3a://path/to/simplejob.py],ActionOnFailure=CONTINUE
Run Code Online (Sandbox Code Playgroud)

python emr apache-spark

15
推荐指数
1
解决办法
2781
查看次数

标签 统计

apache-spark ×1

emr ×1

python ×1