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 的新手,所以非常感谢您的帮助。
您只能指定一个字母 M
、d
和 h
。 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.
我有一个“日期”列,它是 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 的新手,所以非常感谢您的帮助。
您只能指定一个字母 M
、d
和 h
。 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.