我有一个博客文件,其中包含此格式的日期:
{{1}}
有没有办法可以直接将它解析为Spark DataFrame的DateType? 我使用Spark 2.2和Scala。
答案 0 :(得分:0)
import org.apache.spark.sql.functions._
df.withColumn("my_date", to_date(unix_timestamp($"date", "dd/MMM/yyyy:HH:mm:ss ").cast("timestamp")))
这个的变种对我有用:)
unix_timestamp()
允许您根据java的日期格式https://docs.oracle.com/javase/tutorial/i18n/format/simpleDateFormat.html
答案 1 :(得分:0)
to_date
使用DateType
:
val df = Seq(
(1, "25/Oct/2011:01:41:00 -0500"),
(2, "02/Nov/2012:12:33:00 -0500")
).toDF("id", "logdate")
import org.apache.spark.sql.functions._
df.select(to_date($"logdate", "dd/MMM/yyyy:HH:mm:ss Z").as("date")).
schema
// res1: org.apache.spark.sql.types.StructType = StructType(StructField(date,DateType,true))
如果您需要TimestampType
,请使用to_timestamp
:
df.select(to_timestamp($"logdate", "dd/MMM/yyyy:HH:mm:ss Z").as("date")).
schema
//res2: org.apache.spark.sql.types.StructType = StructType(StructField(date,TimestampType,true))