spark从hdfs中加载orc文件出现java.lang.NoClassDefFoundError: org/codehaus/janino/InternalCompilerException报错

java.lang.ClassNotFoundException: org.codehaus.janino.InternalCompilerException 错误通常与运行环境缺少所需的依赖库有关,特别是与编译或运行时代码生成相关的库。Janino 是一个嵌入式 Java 编译器,Spark 使用它来动态编译生成的代码。Spark 对 Janino 库的依赖可能与其他库发生了冲突(可能是spring版本),或者 Janino 库没有被正确地包含在运行时的类路径中。

java.lang.NoClassDefFoundError: org/codehaus/janino/InternalCompilerException at org.apache.spark.sql.catalyst.expressions.objects.GetExternalRowField.<init>(objects.scala:1835) ~[spark-catalyst_2.13-3.2.1.jar:3.2.1] at org.apache.spark.sql.catalyst.encoders.RowEncoder$.$anonfun$serializerFor$3(RowEncoder.scala:186) ~[spark-catalyst_2.13-3.2.1.jar:3.2.1] at scala.collection.ArrayOps$.flatMap$extension(ArrayOps.scala:959) ~[scala-library-2.13.5.jar:na] at org.apache.spark.sql.catalyst.encoders.RowEncoder$.serializerFor(RowEncoder.scala:183) ~[spark-catalyst_2.13-3.2.1.jar:3.2.1] at org.apache.spark.sql.catalyst.encoders.RowEncoder$.apply(RowEncoder.scala:72) ~[spark-catalyst_2.13-3.2.1.jar:3.2.1] at org.apache.spark.sql.Dataset$.$anonfun$ofRows$1(Dataset.scala:91) ~[spark-sql_2.13-3.2.1.jar:3.2.1] at org.apache.spark.sql.SparkSession.withActive(SparkSession.scala:775) ~[spark-sql_2.13-3.2.1.jar:3.2.1] at org.apache.spark.sql.Dataset$.ofRows(Dataset.scala:88) ~[spark-sql_2.13-3.2.1.jar:3.2.1] at org.apache.spark.sql.SparkSession.baseRelationToDataFrame(SparkSession.scala:440) ~[spark-sql_2.13-3.2.1.jar:3.2.1] at org.apache.spark.sql.DataFrameReader.loadV1Source(DataFrameReader.scala:274) ~[spark-sql_2.13-3.2.1.jar:3.2.1] at org.apache.spark.sql.DataFrameReader.$anonfun$load$3(DataFrameReader.scala:245) ~[spark-sql_2.13-3.2.1.jar:3.2.1] at scala.Option.getOrElse(Option.scala:201) ~[scala-library-2.13.5.jar:na] at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:245) ~[spark-sql_2.13-3.2.1.jar:3.2.1] at org.apache.spark.sql.DataFrameReader.orc(DataFrameReader.scala:622) ~[spark-sql_2.13-3.2.1.jar:3.2.1] at org.apache.spark.sql.DataFrameReader.orc(DataFrameReader.scala:607) ~[spark-sql_2.13-3.2.1.jar:3.2.1]这是我控制台弹出的报错信息,Caused by: java.lang.ClassNotFoundException: org.codehaus.janino.InternalCompilerException at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) ~[na:na] at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) ~[na:na] at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520) ~[na:na] ... 39 common frames omitted

在遇到这个报错时可能是由于spark版本和jinion的版本不一致或由于你没有手动引入

<dependency>

<groupId>org.codehaus.janino</groupId>

<artifactId>janino</artifactId>

<version>3.1.2</version> <!-- 根据需要调整版本号 -->

</dependency>

注意,如果您通过添加janino后,代码执行时,报错依然没有解决,那么可能是你的spark版本过旧,并不支持janino的最新特性,那么就在spark版本不变的情况下回退janino的版本:如图

这一套属于黄金搭档,不会出现版本问题,但是使用这一套搭档一定让spring版本处于3以下,否则会出现spring slf4j日志实现类和spark冲突的现象。尽量选择使用spring2.7.5稳定靠谱

我写一个方法让sparkSession实例去加载hdfs分布式文件系统中的数据信息,并且简单的执行过滤和读取信息,已经不会出现报错,下一步我们就可以使用mllib等机器学习库或自定义的权重算法实现大数据分析,生成用户个性化内容了

  • 29
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值