Spark 写出MySQL报错,java.sql.BatchUpdateException
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)
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Java之调用Python代码
对于一个数据分析方面的工作者来说,最熟悉的语言无疑就是Python了。对于软件开发者而言,Java又是极其重要的工具。那么,一个很自然的问题就是,我们能够在Java中调用Python代码吗? 想要在Java中调用Python代码,有以下两个办法: 直接通过Runtime进行调用 调用Jython 在Java中如果需要调用第三方程序,可以直接通过Runtime实现,这也是最直接最粗暴的做法,粒度更加粗糙,效率较高,需要安装Python软件。而Jython是Python语言在Java平台的实现,可以理解为一个由 Java 语言编写的 Python 解释器,因此,不需要安装Python软件。它不仅提供了Python的库,同时也提供了所有的Java类,这就使得其有一个巨大的资源库。Jython可以直接调用Python程序中的指定函数或者对象方法,粒度更加精细。但遗憾的是,Jython运行速度并不理想。 接下来,我们将分别介绍以上两种调用方法。 首先是直接通过Runtime调用Python代码。先写个Python代码文件test_argv.py,它位于D盘中,其完整代码如下: i...
- 下一篇
Java网络编程多线程改进上传文件
Java网络编程多线程改进上传文件 服务器的代码用线程进行封装(多线程),这样可以模拟一个同时接收多人上传文件的服务器。 (用循环也可以但是效率低,是单线程的程序) /* * 通过while循环可以改进一个服务器接收多个客户端。 * 但是这个是有问题的。 * * 如果是以下这种情况:假设我还有张三,李四,王五这三个人分别执行客户端 * 文件大小 网速 * 张三:好好学习.avi(100M) 256k * 李四:天天向上.mp3(3M) 1M * 王五:ILoveJava.txt(1k) 100M * * 因为服务器端是阻塞式接收的。只有等某一个人上传文件完后才继续执行程序。效率低。 * * 如何解决呢? * 给每一个用户分别开启一个线程。 * */ 示例代码如下: 1 package cn.itcast_15; 2 3 import java.io.BufferedReader; 4 import java.io.BufferedWriter; 5 import java.io.FileReader; 6 import java.io.IOException; ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- CentOS8编译安装MySQL8.0.19
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Docker安装Oracle12C,快速搭建Oracle学习环境