Spark 写出MySQL报错,java.sql.BatchUpdateException-阿里云开发者社区

开发者社区> 数据库> 正文

Spark 写出MySQL报错,java.sql.BatchUpdateException

简介: spark DataFrame 写出到MySQL时报如下错误: java.sql.BatchUpdateException: Column ‘name’ specified twice at sun.reflect 原因: 写出的DataFrame 表结构和MySQL中创建的表结构不一致, 2个 DataFrame join 后的结果中有两列都是“name”列。

spark DataFrame 写出到MySQL时报如下错误:

java.sql.BatchUpdateException: Column ‘name’ specified twice at sun.reflect

原因: 写出的DataFrame 表结构和MySQL中创建的表结构不一致,
2个 DataFrame join 后的结果中有两列都是“name”列。

解决: 修改DataFrame写出结构。核心代码如下:

    val res1: Dataset[Row] = studentInfoDF.join(stu_scoresDF, 
      studentInfoDF.col("name") === stu_scoresDF.col("name"))
      .filter(stu_scoresDF.col("score") > 80)

    res1.show(false) 

    import  spark.implicits._
    val out: Dataset[(String, Int, String)] = res1.map(row => (row.getAs[String](0),
      row.getAs[Int](1),
      row.getAs[String](3)))
    out.toDF("name","age","score").write.mode("append").jdbc(url,"good_stu",prop)

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

其他文章