如何使用 Scala 处理 Spark 中的日期?

How to handle dates in Spark using Scala?

我有一个如下所示的平面文件。

id,name,desg,tdate
1,Alex,Business Manager,2016-01-01

我正在使用 Spark 上下文读取此文件,如下所示。

val myFile = sc.textFile("file.txt")

我想从此文件生成一个 Spark DataFrame,我正在使用以下代码来实现。

case class Record(id: Int, name: String,desg:String,tdate:String)

val myFile1 = myFile.map(x=>x.split(",")).map {
  case Array(id, name,desg,tdate) => Record(id.toInt, name,desg,tdate)
} 

myFile1.toDF()

这为我提供了一个 ID 为 int 且其余列为 String 的 DataFrame。

我希望将最后一列 tdate 转换为日期类型。

我该怎么做?

您只需将 String 转换为 java.sql.Date 对象。然后,您的代码可以简单地变成:

import java.sql.Date
case class Record(id: Int, name: String,desg:String,tdate:Date)

val myFile1 = myFile.map(x=>x.split(",")).map {
  case Array(id, name,desg,tdate) => Record(id.toInt, name,desg,Date.valueOf(tdate))
} 

myFile1.toDF()