当前位置: 首页 > news >正文

Spark_Oracle_II_Spark高效处理Oracle时间数据:通过JDBC桥接大数据与数据库的分析之旅

接前文背景,

        当需要从关系型数据库(如Oracle)中读取数据时,Spark提供了JDBC连接功能,允许我们轻松地将数据从Oracle等数据库导入到Spark DataFrame中。然而,在处理时间字段时,可能会遇到一些挑战,特别是在Oracle的DATETIMESTAMP类型与Spark SQL的日期时间类型之间进行转换时。

Spark通过JDBC读取Oracle基本配置

val jdbcUrl = "jdbc:oracle:thin:@hostname:port:sid"  
val connectionProperties = new java.util.Properties()  
connectionProperties.put("user", "username")  
connectionProperties.put("password", "password")  
connectionProperties.put("driver", "oracle.jdbc.driver.OracleDriver")  val df = spark.read.jdbc(jdbcUrl, "your_table", connectionProperties)  df.show()

时间转换

        我一开始的续期就是timestamp类型的且格式为yyyy-mm-dd hh:mm:ss字段转换为特定格式的字符串yyyy-MM-dd的将date类型,这是我最直接的需求。

        我是从Oracle读取出来,在Oracle中字段的类型就是Date,格式是yyyy-mm-dd,但是通过这个spark连接jdbc读取出来,就变成了yyyy-mm-dd hh:mm:ss,字段类型也发生了专变成了timestamp类型,导致后面的处理报错。

  误区:我们能直接将TIMESTAMP类型转换成DateType的同时还保持yyyy-MM-dd的字符串格式,因为DateType在Spark SQL中代表的是没有时间的日期(即只包含年、月、日),但是我们可以迂回啊!

      解决思路:

   //1、先把TIMESTAMP转换为String格式的yyyy-mm-dd
val dfWithStringDate = df.withColumn("stat_date", date_format(col("stat_date"), "yyyy-MM-dd"))  //2、再把String格式的yyyy-mm-dd转为Date类型.withColumn("stat_date", to_date(col("stat_date")))

        这样得到了一个既包含DateType日期字段也包含StringType(yyyy-MM-dd格式)日期字段的DataFrame。。。。。。。。。。。。。。。。。。。。。。。

        如有其他理解,欢迎交流。

N!

http://www.lryc.cn/news/407639.html

相关文章:

  • 力扣 459重复的子字符串
  • MyBatis XML配置文件
  • 读写RDS或RData等不同格式的文件,包括CSV和TXT、Excel的常见文件格式,和SPSS、SAS、Stata、Minitab等统计软件的数据文件
  • Android 支持的媒体格式,(二)视频支持格式
  • 密码学原理精解【8】
  • 2024年钉钉杯大数据竞赛A题超详细解题思路+python代码手把手保姆级运行讲解视频+问题一代码分享
  • unity2D游戏开发01项目搭建
  • 删除的视频怎样才能恢复?详尽指南
  • LeetCode160 相交链表
  • 高性能响应式UI部件DevExtreme v24.1.4全新发布
  • Python实现Java mybatis-plus 产生的SQL自动化测试SQL速度和判断SQL是否走索引
  • UDP的报文结构及其注意事项
  • MySQL深度分页问题深度解析与解决方案
  • C#类型基础Part1-值类型与引用类型
  • 被上市公司预判的EPS增速分析
  • 快速入门了解Ajax
  • FPGA开发——呼吸灯的设计
  • 【数据结构】二叉树链式结构——感受递归的暴力美学
  • 开始尝试从0写一个项目--后端(三)
  • 2024年7月解决Docker拉取镜像失败的实用方案,亲测有效
  • 基于内容的音乐推荐网站/基于ssm的音乐推荐系统/基于协同过滤推荐的音乐网站/基于vue的音乐平台
  • STM32智能工业监控系统教程
  • WEB渗透Web突破篇-SQL注入(MYSQL)
  • PDF解锁网站
  • 【Redis】主从复制分析-基础
  • Transformer自然语言处理实战pdf阅读
  • Python 高阶语法
  • 开始尝试从0写一个项目--前端(三)
  • Visual stdio code 运行C项目环境搭建
  • 免杀笔记 -->API的整理Shellcode加密(过DeFender)