【发布时间】:2015-09-09 15:48:49
【问题描述】:
这看起来很简单,但我找不到答案。我正在尝试将以下日期格式的出生日期列转换为 Spark Dataframe API 中的日期格式,然后计算相应的年龄。我可能还需要系统日期。我发现了一些可能有用的 java 库,但在将它与 dataframe api 一起使用时我仍然遇到一些困难。
23-AUG-67
66 年 2 月 28 日
09-APR-59
9/10/2015 编辑:我刚刚发现 Spark 1.5.0 添加了“日期时间功能”,这将在未来 1.5.0 发布时有所帮助here。不幸的是,它不适用于 AWS EMR 中的当前 spark 版本。
2015 年 9 月 10 日晚间编辑:
我能够使用以下代码将出生日期转换为年龄。
请注意,getYear() 函数已被弃用,但我可以看出它们工作正常。
import java.sql.Date
import java.text.SimpleDateFormat
import org.apache.spark.sql.SQLContext
val sqlsc= new SQLContext(sc)
val epoch = System.currentTimeMillis
val curDate = new Date(epoch)
val dtFormat = new SimpleDateFormat("dd-MMM-yy")
val dobToAge = udf( (dob: String) => {
val javaUtilDate = dtFormat.parse(dob)
val sqlDate = new Date(javaUtilDate.getTime())
curDate.getYear - sqlDate.getYear
})
inputdata.withColumn("AGE", dobToAge('dob))
【问题讨论】:
标签: java scala apache-spark apache-spark-sql