Spark Java 本地运行时总是会在parallelize()方法的时候爆出异常:
Exception in thread "main" java.lang.NoSuchMethodError: com.fasterxml.jackson.module.scala.deser.BigDecimalDeserializer$.handledType()Ljava/lang/Class;
at com.fasterxml.jackson.module.scala.deser.NumberDeserializers$.<init>(ScalaNumberDeserializersModule.scala:49)
at com.fasterxml.jackson.module.scala.deser.NumberDeserializers$.<clinit>(ScalaNumberDeserializersModule.scala)
at com.fasterxml.jackson.module.scala.deser.ScalaNumberDeserializersModule$class.$init$(ScalaNumberDeserializersModule.scala:61)
at com.fasterxml.jackson.module.scala.DefaultScalaModule.<init>(DefaultScalaModule.scala:20)
at com.fasterxml.jackson.module.scala.DefaultScalaModule$.<init>(DefaultScalaModule.scala:37)
at com.fasterxml.jackson.module.scala.DefaultScalaModule$.<clinit>(DefaultScalaModule.scala)
at org.apache.spark.rdd.RDDOperationScope$.<init>(RDDOperationScope.scala:82)
at org.apache.spark.rdd.RDDOperationScope$.<clinit>(RDDOperationScope.scala)
at org.apache.spark.SparkContext.withScope(SparkContext.scala:692)
at org.apache.spark.SparkContext.parallelize(SparkContext.scala:709)
at org.apache.spark.api.java.JavaSparkContext.parallelize(JavaSparkContext.scala:134)
at org.apache.spark.api.java.JavaSparkContext.parallelize(JavaSparkContext.scala:146)
at com.zion.SparkAnalyse.action.Count.main(Count.java:15)
由于之前我默认引用的是本地编译的Spark-core_2.11而不优先依赖maven,因此一直没有出错,后来换了工作区之后就出现这个错误了。事实上这个类方法是可以在maven dependencies 里面找到的,很有可能是类冲突,网上大多数解决方案也是一般的导包删包防冲突的方法,但这都不是最好的解决方法,甚至有可能弄的依赖爆炸。各种方法试了,包括补装scala maven for IDE,怀疑网络问题添加maven服务器地址,也无果。
实在没办法,排除法,居然是Hive中的包和spark有冲突,简直了,在maven的pom中,把spark配置往前挪到hive之前就解决了,毕竟花了点时间,在这里做个记录。