【发布时间】:2020-04-03 23:45:03
【问题描述】:
我在时间戳类型的 spark 数据框中有一列,其日期格式类似于“2019-06-13T11:39:10.244Z” 我的目标是将此列转换为保持相同格式的 EST 时间(减去 4 小时)。 我使用 from_utc_timestamp api 进行了尝试,但它似乎正在将 UTC 时间转换为我的本地时区(+5:30)并将其添加到时间戳中,然后从中减去 4 小时。我尝试使用 Joda 时间,但由于某种原因,它在 EST 时间上增加了 33 天
输入 = 2019-06-13T11:39:10.244Z
使用 from_utc_timestamp api:
val tDf = df.withColumn("newTimeCol", to_utc_timestamp(col("timeCol"), "America/New_York"))
输出 = 2019-06-13T13:09:10.244Z+5:30
使用 Joda 时间包:
val coder : (String => String) = (arg: String) => {
new DateTime(arg, DateTimeZone.UTC).minusHours(4).toString("yyyy-mm-dd'T'HH:mm:s.SS'Z'")}
val sqlfunc = udf(coder)
val tDf = df.withColumn("newTime", sqlfunc(col("_c20")))
输出 = 2019-39-13T07:39:10.244Z
期望的输出 = 2019-06-13T07:39:10.244Z
请告知我应该如何进行。提前致谢
【问题讨论】:
标签: scala dataframe apache-spark jodatime utc