目录
Q1:java.lang.NoClassDefFoundError: org/codehaus/janino/InternalCompilerException
Q2:org.apache.hadoop.hive.metastore.api.InvalidObjectException: Role public already exists.
Q1:java.lang.NoClassDefFoundError: org/codehaus/janino/InternalCompilerException
执行 sparkSession.sql("select * from test").show(1)时报以下错误
第一反应是包冲突,但是在idea里找了下,发现janino包只有一个
后面搜了下,是版本兼容问题,到https://mvnrepository.com/artifact/org.codehaus.janino/janino搜了一圈,换了最新版本还是不行,有点懵逼不知道到底该用哪个版本,后面忽然想到/spark-3.0.0/jars目录下有这些包,找到对应版本,替换。
改成如下,问题完美解决
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.12</artifactId>
<version>3.0.0-preview2</version>
<exclusions>
<exclusion>
<artifactId>janino</artifactId>
<groupId>org.codehaus.janino</groupId>
</exclusion>
<exclusion>
<artifactId>commons-compiler</artifactId>
<groupId>org.codehaus.janino</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.codehaus.janino</groupId>
<artifactId>janino</artifactId>
<version>3.0.15</version>
</dependency>
Q2:org.apache.hadoop.hive.metastore.api.InvalidObjectException: Role public already exists.
解决Q1后再次执行代码报如下错误
网上搜了下说是hive-metastore相关的包冲突,但是对比了下pom中引入的jar和/spark-3.0.0/jars,版本是一样的。无奈不知道该怎么办了,借助maven helper插件看了下包冲突,把红色报冲突的全部exclude了——主要是hive相关的jar
ps:这个用了idea里的插件maven helper,可以帮助更快找到包冲突