火花群集上的错误'java.lang.NoSuchMethodError: com.google.gson.reflect.TypeToken.getParameterized'



我有scala应用程序在本地(来自IntelliJ IDE(上使用Spark运行,但在Spark集群上运行应用程序时出现以下错误:

Exception in thread "main" java.lang.NoSuchMethodError: com.google.gson.reflect.TypeToken.getParameterized(Ljava/lang/reflect/Type;[Ljava/lang/reflect/Type;)Lcom/google/gson/reflect/TypeToken;
at com.cloudant.client.api.Database.query(Database.java:502)
at com.ibm.ursus.repositories.CloudantRepository.read(CloudantRepository.scala:61)

我的应用程序使用GSON库版本2.8.2:

"com.google.code.gson" % "gson" % "2.8.2"

这篇文章为我指明了正确的方向。因此,问题的解决方案是spark-submit中的以下行:

/opt/spark/bin/spark-submit 
--jars gson-2.8.2.jar 
--conf spark.driver.extraClassPath=gson-2.8.2.jar 
--conf spark.executor.extraClassPath=gson-2.8.2.jar 

它将正确的库添加到Spark集群上的,并将其添加到"内部"Spark库2.2.4之前的类路径中。

相关内容

最新更新