我有一个weblog文件,其中包含以下格式的日期:
25/Oct/2011:01:41:00 -0500有什么方法可以直接将其解析为DateType of吗?我在Scala中使用Spark2.2。
发布于 2018-03-27 19:52:06
使用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))发布于 2018-03-27 19:50:16
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定义日期格式
https://stackoverflow.com/questions/49520492
复制相似问题