将Weblog文件的日期解析为Spark DataFrame中的DateType

时间:2018-03-27 18:56:01

标签: scala apache-spark

我有一个博客文件,其中包含此格式的日期:

{{1}}

有没有办法可以直接将它解析为Spark DataFrame的DateType? 我使用Spark 2.2和Scala。

2 个答案:

答案 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))