SparkClassNotFoundException: xxx
程序员文章站
2022-06-02 20:14:07
...
问题原因:
spark应用在计算时使用到第三方依赖jar包,在spark集群运行时如果没有提供此jar包
则会发生java.lang.ClassNotFoundException
!
解决办法:
第一种方法: 将第三方依赖jar包,提前准备到spark集群的每一个计算节点(太麻烦不建议)
第二种方法: 提交spark应用的时候,添加参数,在线下载需要的第三方依赖(麻烦且有问题不建议)
第三种方案【推荐】:将第三方远程依赖,打包到计算应用中(推荐)
1.添加打包插件
# 1. 在maven配置文件中添加一个打包插件
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<!--这里要替换成jar包main方法所在类 -->
<mainClass>com.netzhuo.datasource.RDDCreatedByDB</mainClass>
</manifest>
<manifestEntries>
<Class-Path>.</Class-Path>
</manifestEntries>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id> <!-- this is used for inheritance merges -->
<phase>package</phase> <!-- 指定在打包节点执行jar包合并操作 -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
打包结束后会获得两个jar包:xxx.jar
和xxx-jar-with-dependencies.jar
- 第一个jar包是不包含第三方依赖的普通jar包
- 第二个jar包是包含第三方完整依赖的特殊jar包
提交完整的jar包即可解决!!!
推荐阅读
-
sql server2005进程无法向表"dbo"."xxx"进行大容量复制(错误号: MSSQL_REPL20037)
-
解析:ClickOnce通过URL传递参数 XXX.application?a=1
-
sql server2005进程无法向表"dbo"."xxx"进行大容量复制(错误号: MSSQL_REPL20037)
-
Table ‘xxx’ is marked as crashed and should be repaired 错误解决方法参考
-
docker build提示error checking context:can't stat xxx
-
所有Intellij IDEA Cannot Resolve Symbol XXX问题的解决方法汇总
-
mysql报错1033 Incorrect information in file: ‘xxx.frm’问题的解决方法
-
解析:ClickOnce通过URL传递参数 XXX.application?a=1
-
如何把转入成功的XXX.sql导入到自己的数据库里
-
无法打开物理文件xxx.mdf操作系统错误 5:“5(拒绝访问。)” (Microsoft SQL Server,错误: 5120)的解决方法