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

时间:2016-04-22 07:37:15

标签: scala date apache-spark dataframe rdd

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

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

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

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的DataFrame,其余的列为String。

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

我该怎么做?

1 个答案:

答案 0 :(得分:6)

您只需将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()