【发布时间】:2018-06-01 05:13:39
【问题描述】:
我正在尝试将 logback 用于 spark 流中的记录器。当我尝试通过 spark-submit 提交工作时,我遇到了如下异常。
线程“主”java.lang.ClassCastException 中的异常: org.slf4j.impl.Log4jLoggerFactory 不能转换为 ch.qos.logback.classic.LoggerContext 在 consumer.spark.LogBackConfigLoader.(LogBackConfigLoader.java:18) 在 consumer.spark.Sample.main(Sample.java:18) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:743) 在 org.apache.spark.deploy.SparkSubmit$$anon$1.run(SparkSubmit.scala:169) 在 org.apache.spark.deploy.SparkSubmit$$anon$1.run(SparkSubmit.scala:167) 在 java.security.AccessController.doPrivileged(Native Method) 在 javax.security.auth.Subject.doAs(Subject.java:422) 在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1656) 在 org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:167) 在 org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:212) 在 org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:126) 在 org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
我的 pom.xml 是:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<slf4j.version>1.6.1</slf4j.version>
<logback.version>1.2.3</logback.version>
</properties>
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>${logback.version}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
我的登录代码是:
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
JoranConfigurator configurator = new JoranConfigurator();
configurator.setContext(lc);
configurator.doConfigure(externalConfigFileLocation);
我的 spark-submit 命令是:
~/spark-2.1.1-bin-hadoop2.6/bin/spark-submit --master yarn --deploy-mode 客户端 --driver-memory 4g --executor-memory 2g --executor-cores 4 --class consumer.spark.Sample ~/SparkStreamingJob/log_testing.jar ~/SparkStreamingJob/spark-jobs/config/conf/logback.xml
【问题讨论】:
-
你的 logback 代码的导入包是什么?很难看出您正在使用哪个实现。具体来说,
LoggerFactory来自哪个包?
标签: java maven apache-spark logback