最近在学习大数据,然后使用Scala创建Datasets时,运行代码爆出了如下异常:
Exception in thread "main" java.lang.NoSuchMethodError: scala.Product.$init$(Lscala/Product;)V
at com.shuai7boy.myscalacode.Person.<init>(Test.scala:17)
at com.shuai7boy.myscalacode.Test$.main(Test.scala:10)
at com.shuai7boy.myscalacode.Test.main(Test.scala)
我的程序代码如下:
object Test {
def main(args: Array[String]): Unit = {
val spark = SparkSession.builder().appName("spark SQL Demo").master("local").getOrCreate()
import spark.implicits._
val caseClassDS = Seq(Person("张三", 23)).toDS()
caseClassDS.show()
}
}
case class Person(name: String, age: Int)
按照预期应该打印出如下结果
// +----+---+
// |name|age|
// +----+---+
// |张三| 23|
// +----+---+
但是却报错了,然后网上搜了下解决方案都是scala版本问题,但是我看了下我的版本都对着呢。
请问我这个怎么解决?谁可以帮帮我~叩谢!
问题解决了,我仔细对比了下项目,发现了引用了两处,一处使用Maven引用的Spark,一处手动引用的本地包,然后就报错了。去掉了本地宝,都改为了Maven引用就好了。
总结:要看清,不要本地包和Maven包同时使用,这是一个坑。