使用spark.jdbc加载时,更改默认时区会在Oracle表中转换时间

时间:2017-10-11 22:26:20

标签: oracle scala apache-spark jdbc timestamp

我正在使用Spark 2.1.0,Scala 2.11.8和Oracle 12c,同时将火花数据框加载到Oracle它转换时间,服务器上的时区是EDT,我将其更改为亚洲/加尔各答,因为第1条记录中的日期不是在EDT有效(DST在特定时间踢了)。以下是默认的时区代码和数据框

import java.util.TimeZone
val tz= TimeZone.getTimeZone("Asia/Kolkata")
TimeZone.setDefault(tz)

//Create a DataFrame to Load Data
df3.show
+---+----------+--------------------+
| id| something|              dateee|
+---+----------+--------------------+
|  1|Date ---- |2017-03-12 02:02:...|
|  2|Date ---- |2017-02-12 02:02:...|
|  3|Date ---- |2017-01-12 02:02:...|
|  4|Date ---- |2017-08-01 11:21:...|
+---+----------+--------------------+

当我运行df3.write.mode("append").jdbc(Url, "test_timestamp", dbProp)

加载到数据库中的数据是

1   Date ----   3/11/2017 3:32:00 PM
2   Date ----   2/11/2017 3:32:00 PM
3   Date ----   1/11/2017 3:32:00 PM
4   Date ----   8/1/2017 1:51:33 AM

表格式 -

Name                                      Null?    Type                        
----------------------------------------- -------- ------------------------
id                                                 NUMBER(38)                  
something                                          VARCHAR2(100)               
dateee                                             DATE                        

我想在DataFrame中加载时间戳。 当我不使用java.util.TimeZone并将另一个TimeZone设置为默认值时,这不会发生。

0 个答案:

没有答案