【发布时间】:2015-04-24 09:45:27
【问题描述】:
我有一个 CSV,其中一个字段是特定格式的日期时间。我不能直接在我的 Dataframe 中导入它,因为它需要是一个时间戳。所以我将它作为字符串导入并像这样将其转换为Timestamp
import java.sql.Timestamp
import java.text.SimpleDateFormat
import java.util.Date
import org.apache.spark.sql.Row
def getTimestamp(x:Any) : Timestamp = {
val format = new SimpleDateFormat("MM/dd/yyyy' 'HH:mm:ss")
if (x.toString() == "")
return null
else {
val d = format.parse(x.toString());
val t = new Timestamp(d.getTime());
return t
}
}
def convert(row : Row) : Row = {
val d1 = getTimestamp(row(3))
return Row(row(0),row(1),row(2),d1)
}
使用 Dataframe API 或 spark-sql 是否有更好、更简洁的方法来执行此操作?上述方法需要创建一个 RDD 并再次为 Dataframe 提供架构。
【问题讨论】:
标签: scala apache-spark apache-spark-sql