Spark Scala 从日期创建时间戳列

Spark Scala creating timestamp column from date

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

val New_DF = Old_DF.withColumn("时间戳", unix_timestamp($"日期", "MM/dd/yyyy hh:mm:ss a"))

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

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

您只能指定一个字母 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。特别是:

Number: For formatting, the number of pattern letters is the minimum number of digits, and shorter numbers are zero-padded to this amount. For parsing, the number of pattern letters is ignored unless it's needed to separate two adjacent fields.