我正在使用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 将具有"date"数据类型的列转换为"java.sql.timestamp"数据类型。在此转换过程中,我遇到了夏令时之后的日期问题。
例如:
oracle: SERVICE_DATE = 2008-03-09 02:49:00.0 [日期]火花: SERVICE_DATE = 2008-03-09 03:49:00.0 [时间戳]
将预言机日期转换为 JDBC 时间戳时是否存在此问题?
来自 https://github.com/apache/spark/pull/18411/files/aefd028883bc27cd5929e80dff29d2b15aa114b2
您可以看到,有一个名为oracle.jdbc.mapDateToTimestamp
的属性,默认情况下true
。如果将其设置为false
则Date
列不会标记为Timestamp
。