【问题标题】:How to get the current local time or system time in spark-scala dataframe?如何在 spark-scala 数据框中获取当前本地时间或系统时间?
【发布时间】:2020-01-28 07:44:57
【问题描述】:

我正在尝试获取 spark-scala 中的当地时间,但它正在返回 UTC。

我正在使用 java.time.LocalDateTime 来获取当前时间戳。但它返回 UTC 标准。

java.sql.Timestamp.valueOf(DateTimeFormatter.ofPattern("YYYY-MM-dd HH:mm:ss.SSSSSS").format(LocalDateTime.now))

LocalDateTime 在 spark shell 中返回本地时间,但在我的代码中它给出了 UTC 标准。

val time: LocalDateTime = LocalDateTime.now

如何获取当前时间?

当前输出为 UTC。我需要当地时间。 我需要更改区域。

【问题讨论】:

标签: scala apache-spark apache-spark-sql timezone java-time


【解决方案1】:

org.apache.spark.sql.fuctions 中使用current_timestamp(),这会给出当地时间。

【讨论】:

  • 谢谢,是的,我试过了。但这也将返回 UTC。你知道如何将 spark 配置为当地时间吗?
  • 如果你想作为数据帧检索,那么 spark.range(1).select(current_timestamp).show(false) 否则你可以通过像这样“var date_ = spark.range( 1).select(current_timestamp).first.get(0)"
  • 2019-09-28 15:17:20.079 这是此答案返回的时间(UTC 时间)。我的当地时间现在是 20:48。
【解决方案2】:

我知道的最好方法是根据您的时区使用 GMT 偏移量。 获取您的 GMT 偏移量并更换。在这个例子中,我的 GMT 偏移量是 -5。让我知道它是否有帮助。 如果他解决了问题,请告诉我。

df=spark.sql("select from_utc_timestamp(current_timestamp(),'GMT-5') AS your_local_datetime")
df.show(truncate=False)

【讨论】:

    猜你喜欢
    • 2011-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-20
    • 1970-01-01
    • 1970-01-01
    • 2016-07-30
    • 2014-07-06
    相关资源
    最近更新 更多