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

Rah*_*hul 2 scala date dataframe apache-spark rdd

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

id,name,desg,tdate
1,Alex,Business Manager,2016-01-01
Run Code Online (Sandbox Code Playgroud)

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

val myFile = sc.textFile("file.txt")
Run Code Online (Sandbox Code Playgroud)

我想从这个文件生成一个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()
Run Code Online (Sandbox Code Playgroud)

这给了我一个DataFrame,其id为int,其余列为String.

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

我怎样才能做到这一点?

mga*_*ido 6

您只需将其转换Stringjava.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()
Run Code Online (Sandbox Code Playgroud)

  • 谢谢马克再次迅速回复!它对我有用,这次我有机会接受你的回答:) (2认同)