Spark从字符串转换为TimestampType

时间:2018-02-23 16:51:56

标签: apache-spark apache-spark-sql

当我将字符串中的TimeStamp值转换为spark中的TimeStamp类型时,我看到了一些我不明白的东西。 我使用的Spark版本是2.11

这是代码。

val t = sc.parallelize(Array("2018-02-16T12:46:29.336+00:00")).toDF("t")
t.select(t.col("t").cast(TimestampType).as("t")).show(false)

,结果是。

+-----------------------+
|t                      |
+-----------------------+
|2018-02-16 13:46:29.336|

让我感到困惑的是,即使时区是+00:00,小时从12变为13。

当我将时区更改为+01:00时,如下所示

val t = sc.parallelize(Array("2018-02-16T12:46:29.336+01:00")).toDF("t")
t.select(t.col("t").cast(TimestampType).as("t")).show(false)

结果现在。小时值没有变化。 t:org.apache.spark.sql.DataFrame = [t:string]

+-----------------------+
|t                      |
+-----------------------+
|2018-02-16 12:46:29.336|
+-----------------------+

我在笔记本电脑上本地运行spark,时区为UTC + 1。 cast函数是否根据机器时区自动转换时区?如果是,如何避免这种情况?

有人可以帮助我吗?

0 个答案:

没有答案