使用pyspark on访问Spark的log4j记录器的正确方法是什么
遗嘱执行人?
在驱动程序中这样做很容易,但我似乎不明白如何访问
executor上的日志记录功能,以便我可以在本地进行日志记录并
纱线收集当地的原木。
有什么方法可以访问本地记录器吗?
标准的日志记录过程是不够的,因为我无法访问spark
执行器的上下文。
不能对执行器使用本地log4j记录器。Python工作人员由
执行器jvm没有到java的“回调”连接,它们只是接收
命令。但是有一种方法可以使用标准python从执行者那里进行日志记录
伐木并用纱线捕捉它们。
在HDFS上,将每个python配置一次日志记录的python模块文件放入其中
worker和proxy日志记录函数(命名为logger.py
):
import os
import logging
import sys
class YarnLogger:
@staticmethod
def setup_logger():
if not 'LOG_DIRS' in os.environ:
sys.stderr.write('Missing LOG_DIRS environment variable, pyspark logging disabled')
return
file = os.environ['LOG_DIRS'].split(',')[0] + '/pyspark.log'
logging.basicConfig(filename=file, level=logging.INFO,
format='%(asctime)s.%(msecs)03d %(levelname)s %(module)s - %(funcName)s: %(message)s')
def __getattr__(self, key):
return getattr(logging, key)
YarnLogger.setup_logger()
然后在应用程序中导入此模块:
spark.sparkContext.addPyFile('hdfs:///path/to/logger.py')
import logger
logger = logger.YarnLogger()
您可以在pyspark函数内部使用,例如普通的日志记录库:
def map_sth(s):
logger.info("Mapping " + str(s))
return s
spark.range(10).rdd.map(map_sth).count()
在pyspark.log日志
将在资源管理器上可见并将在上收集
应用程序完成,这样以后可以使用’yarn logs访问这些日志
-应用程序ID….`。
我正在寻找一种解决方案,能够在Apache Spark节点上执行代码时记录额外的数据,这有助于调查稍后在执行过程中可能出现的一些问题。尝试使用传统的解决方案,例如失败,因为无法在Apache Spark这样的分布式环境中序列化日志实例。 我已经研究了这个问题,现在我发现的解决方案是使用特性如下: 然而,日志特性似乎不是Apache Spark的永久解决方案,因为它被标记为,并且类留档提到: 这可能
我试图建立一个应用程序,使用log4j使日志文件。日志文件的位置通过log4j.properties文件提供。 到目前为止,它运行良好,但我想将spark日志与我从代码生成的日志分开。或者至少在日志文件中打印我的日志消息。 有办法吗? log4j.properties
从其他问题中,我发现WebSphere和Spark都在内部使用SLF4J。如何防止Spark中的SLF4J通过自身重定向来自其他应用程序的所有日志记录? 我使用的是WebSphere Application Server V8.5.5.6和Apache Spark V1.4.1 CHD4二进制发行版。
将PostSharp用于C#应用程序,我有以下场景: Namespace_ACustomLoggingMethod Namespace_B.DoThings thingMethod(实际上是几种不同的方法) DoMomthingMethod调用CustomLoggingMethod,它以所需的格式创建日志条目并且运行良好。正如预期的那样,日志条目将源记录为CustomLoggingMethod,我
我想在我的应用程序中使用SLF4J+logback用于两个目的--日志和审计。 14:41:57.978[main]信息AUDIT_LOGGER-110欢迎使用main 如何确保审核消息在审核记录器下只出现一次?
问题内容: 我正在考虑将Redis用于Web应用程序日志记录目的。我用谷歌搜索,有人将日志转储到Redis队列/列表中,然后将计划的工作人员转储到磁盘中。 http://nosql.mypopescu.com/post/8652869828/another-redis-use-case- centralized-logging 我希望寻求理解,为什么不直接使用Redis持久化到磁盘?如果我分配了一