使用Spark将DataFrame类型数据保存到Oracle的过程中报错:

Exception in thread "main" java.lang.IllegalArgumentException: Can't get JDBC type for struct <data:int, day:int, hours:int, minutes:int, month:int, seconds:int, time:bigint, timeZoneOffset:int, year:int>

Oracle表数据结构是这样的:

pd_id-->varchar
ywxtmc-->varchar
sqljb-->varchar
rzlx-->varchar
cjbbh-->varchar
rzsj-->date
rksj-->date

我一开始创建的pojo类是这样的:

rzsj和rksj都是string类型,导致保存失败,报错。

然后将string类型改成了date类型就报了标题的错误:

java.lang.IllegalArgumentException: Can't get JDBC type for struct<date:int,day:int,hours:int,minutes:int,month:int,seconds:int,time:bigint,timezoneOffset:int,year:int>

解决方法:
思路:时间字段以timestamp格式进行保存

1、首先依旧采用string类型

2、获取到dataFrame之后,使用sparkSQL内置函数转换成timestamp格式

RDD<String> stringRDD = sparkContext.textFile("C:\\Users\\yanni\\Documents\\WeChat Files\\yanning1994-4\\FileStorage\\File\\2020-07\\catalina.out", 5);
JavaRDD<String> stringJavaRDD = stringRDD.toJavaRDD();JavaRDD<MGOutput> rowRDD = stringJavaRDD .map(line -> {String parts[] = line.split("&##&");MGOutput stu = new MGOutput();stu.setPd_id(parts[0]);stu.setSqljb(parts[1]);stu.setRzsj(parts[2]);stu.setYwxtmc("业务系统");stu.setRzlx("采集类型");stu.setCjbbh("版本号");SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String format = df.format(new Date());stu.setRksj(format);return stu;
});//完整数据的DataFrame
Dataset<Row> dataFrame = sparkSession.createDataFrame(rowRDD, MGOutput.class);
dataFrame.createTempView("rowDataset");
Dataset<Row> result = sparkSession.sql("select pd_id ,to_timestamp(rzsj) as rzsj,to_timestamp(rzsj) as rzsj from rowDataset");//保存数据
result.write().mode("overwrite").format("jdbc").option("url","jdbc:oracle:thin:@//192.168.1.xxx:11521/xxx").option("user","xxx").option("password","xxx").option("dbtable","xxx").option("batchsize","10").save();

3、得到新的dataFrame即可成功保存。

Can‘t get JDBC type for struct<date:int,day:int,hours:int,minutes:int,month:int,seconds:int,time:big相关推荐

  1. C: error: incompatible types when initializing type ‘int’ using type ‘atomic_t’ {aka ‘struct <anonym

    typedef.c:17:10: error: incompatible types when initializing type 'int' using type 'atomic_t' {aka ' ...

  2. 毕设问题小记——No Dialect mapping for JDBC type:-1错误

    为了实现在用户误操作后能够对数据进行修正,打算添加一个数据库管理功能,主要实现对数据表的查询和执行sql语句.费了半天功夫完成以后查询有的表数据正常显示,但是个别表出现如下错误: No Dialect ...

  3. error: incompatible types when assigning to type ‘const struct wiphy_wowlan_support‘

    环境说明 系统:Centos7 (3.10.0) 驱动版本:00014996-RTL8192EU_linux_v5.6.3.1_34030_COEX20171113-0047.20190613.zip ...

  4. Go 接口实现原理【高阶篇】: type _interface struct

    Go 接口实现原理[高阶篇]: type _interface struct The Internal Definition Of Interface Types https://www.tapirg ...

  5. JDBC和Ibatis中的Date,Time,Timestamp处理

    JDBC和Ibatis中的Date,Time,Timestamp处理 November 25th, 2010西坪 Leave a commentGo to comments 在此前,遇到过使用Ibat ...

  6. 解决pandas(Python)的报错:unsupported operand type(s) for -: ‘datetime.date’ and ‘Timestamp’

    在使用Pandas包的时候,遇到时间加减出现的报错 'datetime.date'是datetime的一种时间格式: 'Timestamp'(注意是大写的字母)是Pandas的一种时间格式. 这两个虽 ...

  7. AnalysisException: cannot resolve ‘`Magnitude Type`‘ given input columns: [Date, Day, Depth, Latitud

    Ubuntu下Jupyter报错:AnalysisException: cannot resolve '`Magnitude Type`' given input columns: [Date, Da ...

  8. maven <type>pom</type><scope>import</scope>

    我们知道Maven的继承和Java的继承一样,只能单继承,无法实现多继承,你是否想过我们如果要继承多个父模块的时候应该怎么做呢?或许你会想只往一个父模块中添加jar包依赖,只继承一个父模块就可以了,但 ...

  9. oracle 方言报错,ORACLE11g:No Dialect mapping for JDBC type: -9解决方案详解

    解决方案 由于hibernate4.2.0和Oracle10g数据库结合使用自定义方言时,需要和老版本做区别,原来的Oracle10gDialect中没有注册NVARCHAR和NCLOB数据类型, 此 ...

最新文章

  1. C++ Exercises(六)
  2. Bing Maps Geographic Coverage - Bing地图图像覆盖范围
  3. 浪潮NF5270M3 刷uefi_新零售浪潮中,开为科技利用刷脸支付帮门店“运营”人
  4. 学习RUNOOB.COM进度一
  5. 中文简体字-繁体字转换 WEB 服务(源代码)
  6. C语言%.2f四舍五入
  7. echart vue 图表大小_vue里echarts自适应窗口大小改变
  8. 循环队列(循环数组)中元素个数的计算
  9. PHP文件操作【其一】文件路径
  10. CentOS被攻击的分析过程
  11. (转)B-树、B+树、B*树
  12. CodeForces round 753 problem B Odd Grasshopper(奇怪的蚱蜢)
  13. C#设计模式---迭代器模式(Iterator Pattern)
  14. webpack + react
  15. 2022年智慧城市行业概括及现状
  16. A certificate chain processed, but terminated in a root certificate which is not trusted...
  17. 上传文件到服务器速度慢怎么解决,网络上传速度慢怎么办(解读其上传速度慢原由)...
  18. HTML中对字体颜色稀色,稀的五行属什么,五行分别代表什么颜色
  19. 暮雨小巷,殇了身影,冷了沙洲
  20. 街篮中服务器维修什么时候能结束,街头篮球手游1月6日微信iOS维护公告 服务器扩容...

热门文章

  1. 腾讯云修改邮箱登录方式
  2. 乐视max70老款_这货是电视?超大尺寸乐视TV Max70试玩
  3. 向量组a可由向量组b线性表示什么意思
  4. 存储过程常用开关(set命令解析)
  5. switch日文键盘打中文_12月有哪些Switch游戏值得期待?
  6. 探究添加水印的多种方式
  7. Apache Mina Demo
  8. 本地搭建自己的电影网站,并发布公网访问 1-3
  9. 深度优先搜索(DFS) -全排列
  10. 金工如何运用计算机思维,金工的实习心得体会