unix_timestamp() 函数更改 scala spark 中的小时数
unix_timestamp() function changes hour in scala spark
我在 unix 中使用 Spark 2.1.0,发现一个奇怪的问题,其中 unix_timestamp 正在改变一个特定时间戳的小时,我创建了一个数据框,如下所示
对于 df2 中的第一条记录,将“20170312020200”作为字符串,我后来将其转换为 df3 中的时间戳,小时数应为 02,但在 df3 中为 03。但是第二条记录在将字符串转换为时间戳时没有问题。
当我 运行 在本地系统中使用 Intellij 的应用程序时,不会发生这种情况。当我们 运行 我们的应用程序时,这也发生在 spark-submit 中。
2017 年 3 月 12 日2:02上午在很多时区都不是有效时间。那是夏令时开始的时候,美国的时钟从 1:59:59 跳到 3:00:00。
我猜你的本地机器和spark集群有不同的系统时区设置。
我正在使用 Spark 2,您可以看到以下结果,您的问题与 unix_timestamp 或 Spark 版本无关,请检查您的数据。
import org.apache.spark.sql.functions.unix_timestamp
val df2 = sc.parallelize(Seq(
(10, "date", "20170312020200"), (10, "date", "20170312050200"))
).toDF("id ", "somthing ", "datee")
df2.show()
val df3=df2.withColumn("datee", unix_timestamp($"datee", "yyyyMMddHHmmss").cast("timestamp"))
df3.show()
+---+---------+--------------+
|id |somthing | datee|
+---+---------+--------------+
| 10| date|20170312020200|
| 10| date|20170312050200|
+---+---------+--------------+
+---+---------+-------------------+
|id |somthing | datee|
+---+---------+-------------------+
| 10| date|2017-03-12 02:02:00|
| 10| date|2017-03-12 05:02:00|
+---+---------+-------------------+
import org.apache.spark.sql.functions.unix_timestamp
df2: org.apache.spark.sql.DataFrame = [id : int, somthing : string ... 1 more field]
df3: org.apache.spark.sql.DataFrame = [id : int, somthing : string ... 1 more field]
我在 unix 中使用 Spark 2.1.0,发现一个奇怪的问题,其中 unix_timestamp 正在改变一个特定时间戳的小时,我创建了一个数据框,如下所示
对于 df2 中的第一条记录,将“20170312020200”作为字符串,我后来将其转换为 df3 中的时间戳,小时数应为 02,但在 df3 中为 03。但是第二条记录在将字符串转换为时间戳时没有问题。
当我 运行 在本地系统中使用 Intellij 的应用程序时,不会发生这种情况。当我们 运行 我们的应用程序时,这也发生在 spark-submit 中。
2017 年 3 月 12 日2:02上午在很多时区都不是有效时间。那是夏令时开始的时候,美国的时钟从 1:59:59 跳到 3:00:00。
我猜你的本地机器和spark集群有不同的系统时区设置。
我正在使用 Spark 2,您可以看到以下结果,您的问题与 unix_timestamp 或 Spark 版本无关,请检查您的数据。
import org.apache.spark.sql.functions.unix_timestamp
val df2 = sc.parallelize(Seq(
(10, "date", "20170312020200"), (10, "date", "20170312050200"))
).toDF("id ", "somthing ", "datee")
df2.show()
val df3=df2.withColumn("datee", unix_timestamp($"datee", "yyyyMMddHHmmss").cast("timestamp"))
df3.show()
+---+---------+--------------+
|id |somthing | datee|
+---+---------+--------------+
| 10| date|20170312020200|
| 10| date|20170312050200|
+---+---------+--------------+
+---+---------+-------------------+
|id |somthing | datee|
+---+---------+-------------------+
| 10| date|2017-03-12 02:02:00|
| 10| date|2017-03-12 05:02:00|
+---+---------+-------------------+
import org.apache.spark.sql.functions.unix_timestamp
df2: org.apache.spark.sql.DataFrame = [id : int, somthing : string ... 1 more field]
df3: org.apache.spark.sql.DataFrame = [id : int, somthing : string ... 1 more field]