当前位置: 首页 > 知识库问答 >
问题:

如何调整PySpark shell日志级别?[副本]

养翔
2023-03-14

目前我得到了一个NullPointException。我不知道如何修理它。只是想知道我是否可以调整Python日志级别,看看是否可以从中获得更多信息。问题:如何调整PySpark的日志级别?

Python 2.7.5 (default, Oct 11 2015, 17:47:16)
[GCC 4.8.3 20140911 (Red Hat 4.8.3-9)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel).
17/02/28 16:52:22 ERROR spark.SparkContext: Error initializing SparkContext.
17/02/28 16:52:22 ERROR util.Utils: Uncaught exception in thread Thread-2
java.lang.NullPointerException
        at org.apache.spark.network.shuffle.ExternalShuffleClient.close(ExternalShuffleClient.java:152)
        at org.apache.spark.storage.BlockManager.stop(BlockManager.scala:1231)
        at org.apache.spark.SparkEnv.stop(SparkEnv.scala:96)
        at org.apache.spark.SparkContext$$anonfun$stop$12.apply$mcV$sp(SparkContext.scala:1768)
        at org.apache.spark.util.Utils$.tryLogNonFatalError(Utils.scala:1230)
        at org.apache.spark.SparkContext.stop(SparkContext.scala:1767)
        at org.apache.spark.SparkContext.<init>(SparkContext.scala:614)
        at org.apache.spark.api.java.JavaSparkContext.<init>(JavaSparkContext.scala:59)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
        at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:234)
        at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:381)
        at py4j.Gateway.invoke(Gateway.java:214)
        at py4j.commands.ConstructorCommand.invokeConstructor(ConstructorCommand.java:79)
        at py4j.commands.ConstructorCommand.execute(ConstructorCommand.java:68)
        at py4j.GatewayConnection.run(GatewayConnection.java:209)
        at java.lang.Thread.run(Thread.java:745)
Traceback (most recent call last):
  File "/opt/cloudera/parcels/CDH-5.9.0-1.cdh5.9.0.p0.23/lib/spark/python/pyspark/shell.py", line 43, in <module>
    sc = SparkContext(pyFiles=add_files)
  File "/opt/cloudera/parcels/CDH-5.9.0-1.cdh5.9.0.p0.23/lib/spark/python/pyspark/context.py", line 115, in __init__
    conf, jsc, profiler_cls)
  File "/opt/cloudera/parcels/CDH-5.9.0-1.cdh5.9.0.p0.23/lib/spark/python/pyspark/context.py", line 172, in _do_init
    self._jsc = jsc or self._initialize_context(self._conf._jconf)
  File "/opt/cloudera/parcels/CDH-5.9.0-1.cdh5.9.0.p0.23/lib/spark/python/pyspark/context.py", line 235, in _initialize_context
    return self._jvm.JavaSparkContext(jconf)
  File "/opt/cloudera/parcels/CDH-5.9.0-1.cdh5.9.0.p0.23/lib/spark/python/lib/py4j-0.9-src.zip/py4j/java_gateway.py", line 1064, in __call__
  File "/opt/cloudera/parcels/CDH-5.9.0-1.cdh5.9.0.p0.23/lib/spark/python/lib/py4j-0.9-src.zip/py4j/protocol.py", line 308, in get_return_value
py4j.protocol.Py4JJavaError: An error occurred while calling None.org.apache.spark.api.java.JavaSparkContext.
:
>>>

共有1个答案

夹谷英杰
2023-03-14

为网关创建具有更详细日志记录级别的自定义log4j文件,例如:

log4j.rootCategory=INFO, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n

log4j.logger.org.apache.spark.api.python.PythonGatewayServer=DEBUG

然后按以下方式在pyspark命令中使用它:

./bin/pyspark --driver-java-options '-Dlog4j.configuration=file:log4j-debug.properties'
 类似资料:
  • 在我的Java应用程序中,我使用SLF4J+Logback进行日志记录。我在开发环境中使用调试级日志记录,在生产环境中使用错误级日志记录。但是有一些消息我无论如何都想要记录下来,无论日志级别如何(类似于,但使用的是logger)。 有什么切实可行的方法可以实现这一点吗?我可以使用error或更低的级别,但我想做的是给出一些信息,所以在语义上是错误的,它不是错误。 我可以在我的中为我的类定义另一个记

  • 我想更改quarkus应用程序的日志级别,在我可以找到任何引用的地方,它都指向application.properties文件。 我需要任何额外的扩展来让它工作吗? 我读过这个问题,但对我不起作用。我真的不知道,我从Quarkus bootstrap创建了一个简单的应用程序,但我仍然有同样的行为。

  • 主要内容:如何设置日志级别?,日志级别如何工作?,Log4j 日志级别示例日志级别用于对日志文件中的信息进行分类。但是它们以非常具体的方式进行分类,即按紧急程度分类。该级别允许您管理以下类型的信息: 您可以在搜索过程中过滤您的日志文件。 您可以管理您记录的信息量。 系统中给出的信息量和类型以及事件日志由配置文件中的 log4j 日志级别设置控制。每条日志消息都以消息级别为前缀。 日志级别是org.apache.log4j.Level类的一个实例。 Log4j 具有以下级

  • 我的MBean部署在JBoss上。jboss日志记录级别设置为'info'。现在,当我将我的包的日志级别(java util logger)更改为“fine”(通过设置日志级别以编程方式运行时)时,它不会追加任何logger.fine(“....”)的消息。信息被过滤掉了。 是否有任何方法可以将java util记录器日志级别的更改传播到jboss日志级别?(java util有不同的级别->SE

  • 我在intellij中创建了一个简单的maven应用程序,并使用slf4j进行日志记录。 我无法在控制台中看到调试日志 我从C:\程序文件\jetbrains\intellij IDEA 2019.3\plugins\maven\lib\maven3\conf\logging\simpleLogger.properties中看到 默认日志级别设置为INFO org.slf4j.simpleLogg

  • 有人能帮我设置日志级别以调试和捕获更多日志所需的spark配置吗