在Spark连接mysql数据库进行查询数据时遇到这样一个坑
val df:DataFrame = spark.read.format("jdbc")
.option("url", "jdbc:mysql://localhost:3306/leetcode")
.option("driver", "com.mysql.jdbc.Driver")
.option("user", "root")
.option("password", "123456")
.option("dbtable", "users")
.load()
Exception in thread "main" java.sql.SQLException: java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long
但是检查数据库并未有BigInteger和Long类型
之后测试连接虚拟机上的mysql是正常的
那么问题到底出现在哪儿呢如果出现以上问题,大家就应该注意了,是不是数据库版本与mysql-connector.jar包的版本不兼容造成的。本人用的是Mysql8.0.11免安装版本,虚拟机的Mysql版本为5.7.28,出现问题时的Maven依赖中jar包版本为5.1.26,更换为5.1.47后解决了该问题。希望能够帮助到遇到这类问题的朋友
直接在pom.xml文件中修改版本
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>