gpt4 book ai didi

pyspark - 如何检测您的代码是否在 pyspark 下运行

转载 作者:行者123 更新时间:2023-12-04 03:59:15 27 4
gpt4 key购买 nike

对于暂存和生产,我的代码将在 PySpark 上运行。但是,在我的本地开发环境中,我不会在 PySpark 上运行我的代码。
从日志记录的角度来看,这提出了一个问题。因为在使用 PySpark 时通过 Py4J 使用 Java 库 Log4J,所以不会使用 Log4J 进行本地开发。
值得庆幸的是,Log4J 的 API 和核心 Python 日志记录模块是相同的:一旦你得到一个记录器对象,你只需使用任一模块 debug()info()等等
因此,我希望检测我的代码是否在 PySpark 或非 PySpark 环境中导入/运行:类似于:

class App:

def our_logger(self):
if self.running_under_spark():
sc = SparkContext(conf=conf)
log4jLogger = sc._jvm.org.apache.log4j
log = log4jLogger.LogManager.getLogger(__name__)
log.warn("Hello World!")
return log
else:
from loguru import logger
return logger
我该如何实现 running_under_spark()
只是尝试导入 pyspark并且查看它是否有效并不是一种防失败的方法,因为我有 pyspark在我的开发环境中,从我的 IDE 中删除有关代码中未导入模块的警告。

最佳答案

也许您可以在运行时检查的 spark 环境中设置一些环境变量(在 $SPARK_HOME/conf/spark-env.sh 中):

export SPARKY=spark
然后检查 SPARKY 是否存在以确定您是否在 spark 环境中。
from os import environ

class App:
def our_logger(self):
if environ.get('SPARKY') is not None:
sc = SparkContext(conf=conf)
log4jLogger = sc._jvm.org.apache.log4j
log = log4jLogger.LogManager.getLogger(__name__)
log.warn("Hello World!")
return log
else:
from loguru import logger
return logger

关于pyspark - 如何检测您的代码是否在 pyspark 下运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63346222/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com