apache-spark - 如何以编程方式在 Pyspark 中获取日志级别
问题描述
我需要在 Pyspark 中以编程方式知道日志级别。
我知道我可以通过以下方式设置它:
# spark is a SparkSession object
spark.sparkContext.setLogLevel(log_level)
但是没有等效的方法来检索日志级别。
有任何想法吗?谢谢!
解决方案
我终于想出了一个解决方案,通过访问 Spark 会话的 JVM(下面的 py4j):
def get_log_level(spark):
log_manager = spark._jvm.org.apache.log4j.LogManager
trace = spark._jvm.org.apache.log4j.Level.TRACE
debug = spark._jvm.org.apache.log4j.Level.DEBUG
info = spark._jvm.org.apache.log4j.Level.INFO
warn = spark._jvm.org.apache.log4j.Level.WARN
error = spark._jvm.org.apache.log4j.Level.ERROR
fatal = spark._jvm.org.apache.log4j.Level.FATAL
logger = log_manager.getRootLogger()
if logger.isEnabledFor(trace):
return "TRACE"
elif logger.isEnabledFor(debug):
return "DEBUG"
elif logger.isEnabledFor(info):
return "INFO"
elif logger.isEnabledFor(warn):
return "WARN"
elif logger.isEnabledFor(error):
return "ERROR"
elif logger.isEnabledFor(fatal):
return "FATAL"
else:
return None
很可能有更好的方法来做到这一点。
推荐阅读
- compression - uncompress a .txt.gz file in mac?
- speech-recognition - Google Speech API 元数据不会影响结果或转换方法
- java - Java Double Object 初始化与其他 Number 类型对象
- git - 用 git 或 hub 命令替换 GitHub UI 序列
- javascript - React 和 Redux this.props.posts 未定义?
- json - 在flutter中使用json_serializable对json对象进行反序列化
- amazon-web-services - boto3 copy vs copy_object 关于 s3 中的文件权限 ACL
- c# - WebApi2 中所有类型异常的全局异常处理程序
- javascript - 如何在 puppeteer 中导航 dom 元素?
- mongodb - 将元素数组更改为字段 mongodb