我正在使用 Python 来实现 spark 作业。我们希望将应用程序中的 python 日志记录输出到 Spark 历史服务器中。所以我们使用了这里列出的方法:
然而问题是,由于 yarn_logger 初始化只发生在驱动程序中,执行程序仍然以 WARNING 的 python 日志记录级别运行,这意味着执行程序没有日志显示。
在我的驱动程序中,我执行以下操作:
if __name__=='__main__':
# initialize logging in main
yarn_logger.YarnLogger.setup_logger()
在其他 python 文件中,我只是初始化 python 日志记录模块:
import logging
LOG = logging.getLogger(__name__)
但这只会导致显示在驱动程序上下文中的日志。
我如何构建它,以便每个进程只初始化一次 yarn_logger,无论应用程序是在本地模式还是集群模式下运行?我当然可以在我的应用程序的每个 python 模块中初始化 yarn_logger,但是如果我在本地模式下运行它可能会导致它在应用程序中多次初始化。