微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在以纱线簇模式运行的PySpark应用程序中检索/写入应用程序日志

如何解决在以纱线簇模式运行的PySpark应用程序中检索/写入应用程序日志

我正在以纱线集群模式提交 PySpark 应用程序,并且想要执行可以将日志写入可访问位置的应用程序日志记录。 我尝试了两种方式记录应用程序:

  1. 使用Python日志记录模块-这适用于yarn客户端模式,我可以将应用程序日志写入边缘节点上的物理位置。但是在纱线簇模式下,由于驱动程序不是从edgenode执行的,因此我的应用程序日志无法写入指定的日志位置。尽管可以很清楚地看到应用程序日志,并且格式正确,如记录器属性中所配置,但在Spark UI的驱动程序日志中。因此,我需要做的就是在应用程序退出后将它们适当地写在HDFS或物理位置上。但不确定如何执行此操作。
  2. 使用Spark的log4j -我可以从SparkContext检索记录器,例如:
   log4jLogger = sc._jvm.org.apache.log4j 
   log = log4jLogger.LogManager.getLogger(__name__)

在使用此记录器进行应用程序日志记录时,日志语句将与Spark自己的日志混合并打印在控制台上。 由于我无权编辑Spark装置的log4j文件,因此我创建了一个具有文件附加程序和所有相关属性自定义log4j配置文件,并将其通过带有--file的spark-submit命令以及spark.executor.extrajavaoptions传递给了我。和spark.driver.extrajavaoptions。 但是对于Scala应用程序来说,这似乎是一种非常特定的方法,因为在设置了这些选项后,该命令开始期望使用Scala特定的--class属性

无法弄清楚这一点。任何指针将不胜感激。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。