Spark SQL - 从 oracle 导入时将 oracle 日期数据类型错误转换为时间戳(java.sql)
Posted
技术标签:
【中文标题】Spark SQL - 从 oracle 导入时将 oracle 日期数据类型错误转换为时间戳(java.sql)【英文标题】:Spark SQL - Incorrect conversion of oracle date data type to timestamp(java.sql) while importing from oracle 【发布时间】:2017-11-28 01:25:56 【问题描述】:我正在使用 Spark SQL 从 Oracle 导入数据,如下所示-
Class.forName("oracle.jdbc.driver.OracleDriver")
var info : java.util.Properties = new java.util.Properties()
info.put("user", user)
info.put("password", password)
val jdbcDF = spark.read.jdbc(jdbcURL, tableFullName, info)
表架构:
SERVICE_DATE - 日期
导入时 Spark 将具有“日期”数据类型的列转换为“java.sql.timestamp”数据类型。在此转换过程中,我遇到了夏令时之后的日期问题。
例如:
oracle:SERVICE_DATE = 2008-03-09 02:49:00.0 [DATE] 火花:SERVICE_DATE = 2008-03-09 03:49:00.0 [TIMESTAMP]
oracle 日期到 JDBC 时间戳的转换有这个问题吗?
【问题讨论】:
解决了吗? 【参考方案1】:来自https://github.com/apache/spark/pull/18411/files/aefd028883bc27cd5929e80dff29d2b15aa114b2
可以看到,有一个属性叫oracle.jdbc.mapDateToTimestamp
,默认是true
。如果将其设置为 false
,Date
列将不会被标记为 Timestamp
。
【讨论】:
有***.com/questions/56020103/…的线索吗?以上是关于Spark SQL - 从 oracle 导入时将 oracle 日期数据类型错误转换为时间戳(java.sql)的主要内容,如果未能解决你的问题,请参考以下文章