【问题标题】:Spark Scala creating timestamp column from dateSpark Scala 从日期创建时间戳列
【发布时间】:2021-03-11 17:52:32
【问题描述】:

我有一个“日期”列,它是 Spark DF 中的字符串,格式为 1/1/2000 12:53 AM,1/1/2000 2:53 AM, 2000 年 1 月 1 日上午 5:53,... 我正在尝试创建一个新列,将该列转换为 Unix 时间戳,但得到一个满为空的列作为我的输出。我用来创建此列的行是:

val New_DF = Old_DF.withColumn("Timestamp", unix_timestamp($"Date", "MM/dd/yyyy hh:mm:ss a"))

我通过连接单独的月、日、年和时间列来创建日期列,但月和日列的输入数据格式为 1 而不是月和日的 01。这是我返回空列的原因还是还有其他原因?如果这是原因,那么我该如何修复从 1 到 01、2 到 02、...的日期和月份列?

这是我第一次使用时间戳,我是 Scala 新手,非常感谢您的帮助。

【问题讨论】:

    标签: scala apache-spark apache-spark-sql unix-timestamp


    【解决方案1】:

    您只能指定一个字母Mdh。 Spark 将使用它作为字段包含的最小位数。请注意,您的时间戳字符串没有秒数,因此您不应包含 :ss

    val New_DF = Old_DF.withColumn("Timestamp", unix_timestamp($"Date", "M/d/yyyy h:mm a"))
    

    有关日期时间格式的更多详细信息,请参阅https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html。特别是:

    数字:对于格式化,模式字母的数量是最小位数,较短的数字会被零填充到这个数量。解析时,模式字母的数量会被忽略,除非需要分隔两个相邻的字段。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-08
      • 1970-01-01
      • 2022-08-22
      • 2021-07-05
      • 2021-08-03
      • 2022-12-10
      相关资源
      最近更新 更多