如何使用 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()
我有一个如下所示的平面文件。
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()