gpt4 book ai didi

java - 在 Spark Dataframe API 中将出生日期转换为年龄

转载 作者:行者123 更新时间:2023-11-29 03:05:23 25 4
gpt4 key购买 nike

这看起来很简单,但我找不到答案。我正在尝试将以下日期格式的一列出生日期转换为 Spark Dataframe API 中的日期格式,然后计算相应的年龄。我可能还需要系统日期。我发现了一些可能有用的 Java 库,但我在将它与 DataFrame API 一起使用时仍然遇到一些困难。

23-AUG-67
28-FEB-66
09-APR-59

9/10/2015 编辑:我刚刚发现 Spark 1.5.0 添加了“日期时间函数”,这将在未来 1.5.0 发布时提供帮助 here .不幸的是,它不适用于 AWS EMR 中的当前 spark 版本。

9/10/2015 晚间编辑:我可以使用以下代码将出生日期转换为年龄。
请注意 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.util.Date 中已弃用的 getXXX 方法,不如使用 java.util.Calendar。

此外,您的解决方案并非在所有情况下都有效。如果某人出生于 1976 年 12 月 31 日。他的年龄将计算为 2015-1976 = 39,即使在 2015 年 1 月 1 日他将近一整年都不是 39 岁。

您应该使用如下所示的计算:http://howtodoinjava.com/2014/05/26/java-code-to-calculate-age-from-date-of-birth/ (将 Java 代码转换为 Scala 应该不是什么大问题)。

关于java - 在 Spark Dataframe API 中将出生日期转换为年龄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32484068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com