我使用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”数据类型 . 在此转换期间,我面临着夏令时之后的日期问题 .
For eg:
oracle:SERVICE_DATE = 2008-03-09 02:49:00.0 [日期] spark:SERVICE_DATE = 2008-03-09 03:49:00.0 [TIMESTAMP]
这个问题是将oracle date转换为JDBC时间戳吗?
1 回答
从https://github.com/apache/spark/pull/18411/files/aefd028883bc27cd5929e80dff29d2b15aa114b2
你可以看到,有一个名为
oracle.jdbc.mapDateToTimestamp
的属性,默认为true
. 如果将其设置为false
,Date
列将不会标记为Timestamp
.