将日期转换为另一种格式 Scala Spark
Convert date to another format Scala Spark
我正在读取包含两种类型日期的 CSV:
- dd-MMM-yyyy hh:mm:ss -> 2019 年 12 月 13 日 17:10:00
- dd/MM/yyyy hh:mm -> 11/02/2020 17:33
我正在尝试将第一种类型的所有日期转换为第二种类型,但找不到好的解决方案。我正在尝试这个:
val pr_date = readeve.withColumn("Date", when(to_date(col("Date"),"dd-MMM-yyyy hh:mm:ss").isNotNull,
to_date(col("Date"),"dd/MM/yyyy hh:mm")))
pr_date.show(25)
然后我将整个日期列作为空值:
我正在尝试使用此功能:
def to_date_(col: Column,
formats: Seq[String] = Seq("dd-MMM-yyyy hh:mm:ss", "dd/MM/yyyy hh:mm")) = {
coalesce(formats.map(f => to_date(col, f)): _*)
}
val p2 = readeve.withColumn("Date",to_date_(readeve.col(("Date")))).show(125)
并且在第一种类型的日期中我也得到空值:
我做错了什么? (新的 Scala Spark)
Scala 版本:2.11.7
星火版本:2.4.3
试试下面的代码?请注意 17
是 HH
,而不是 hh
。也可以尝试 to_timestamp
而不是 to_date
因为你想保持时间。
val pr_date = readeve.withColumn(
"Date",
coalesce(
date_format(to_timestamp(col("Date"),"dd-MMM-yyyy HH:mm:ss"),"dd/MM/yyyy HH:mm"),
date_format(to_timestamp(col("Date"),"dd/MM/yyyy HH:mm"),"dd/MM/yyyy HH:mm")
)
)
我正在读取包含两种类型日期的 CSV:
- dd-MMM-yyyy hh:mm:ss -> 2019 年 12 月 13 日 17:10:00
- dd/MM/yyyy hh:mm -> 11/02/2020 17:33
我正在尝试将第一种类型的所有日期转换为第二种类型,但找不到好的解决方案。我正在尝试这个:
val pr_date = readeve.withColumn("Date", when(to_date(col("Date"),"dd-MMM-yyyy hh:mm:ss").isNotNull,
to_date(col("Date"),"dd/MM/yyyy hh:mm")))
pr_date.show(25)
然后我将整个日期列作为空值:
我正在尝试使用此功能:
def to_date_(col: Column,
formats: Seq[String] = Seq("dd-MMM-yyyy hh:mm:ss", "dd/MM/yyyy hh:mm")) = {
coalesce(formats.map(f => to_date(col, f)): _*)
}
val p2 = readeve.withColumn("Date",to_date_(readeve.col(("Date")))).show(125)
并且在第一种类型的日期中我也得到空值:
我做错了什么? (新的 Scala Spark)
Scala 版本:2.11.7 星火版本:2.4.3
试试下面的代码?请注意 17
是 HH
,而不是 hh
。也可以尝试 to_timestamp
而不是 to_date
因为你想保持时间。
val pr_date = readeve.withColumn(
"Date",
coalesce(
date_format(to_timestamp(col("Date"),"dd-MMM-yyyy HH:mm:ss"),"dd/MM/yyyy HH:mm"),
date_format(to_timestamp(col("Date"),"dd/MM/yyyy HH:mm"),"dd/MM/yyyy HH:mm")
)
)