当前位置: 首页 > 面试题库 >

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

高山
2023-03-14
问题内容

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

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

2015年9月10日编辑 :我刚刚发现Spark
1.5.0添加了“日期时间功能”,这将在以后在此处发布1.5.0时提供帮助。不幸的是,它不适用于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.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应该问题不大)。



 类似资料:
  • 当我没有发现任何关于将年龄转换为出生日期的内容时,我感到惊讶。关于将出生日期转换为年龄,有很多答案,但并非相反。 我有两位数(我能够将它们转换为任何数据类型,甚至转换为DateTime.date(python-格式))。如何将它们转换为完整的SQL日期。它必须current_date年龄(日期和月份对我来说不重要)。最好通过数据库而不是python来完成此操作。 DDL: p、 美国相关问题在My

  • 本文向大家介绍MongoDB如何将出生日期记录转换为年龄,包括了MongoDB如何将出生日期记录转换为年龄的使用技巧和注意事项,需要的朋友参考一下 让我们创建一个包含文档的集合- 在find()方法的帮助下显示集合中的所有文档- 这将产生以下输出- 以下是将出生日期转换为年龄的查询- 这将产生以下输出-

  • 问题内容: 我正在使用模块,即: 我想计算考虑takes年的一年中的某天。例如今天(2009年3月6日)是2009年的第65天。 我看到两个选择: 创建一个数组,确定是否是a年,然后手动汇总天数。 用于猜测,然后二进制搜索一年中的正确日期: YEAR = 2009 DAY_OF_YEAR = 62 d = datetime.date(YEAR, 1, 1) + datetime.timedelta

  • 问题内容: 我表中的日期存储为十进制年份。一个示例翻译为。 我想将十进制年份转换为Oracle的日期格式。 我找到了在Excel中完成此操作的人:十进制的年初至今公式? 但是,我不太清楚如何将逻辑转换为Oracle PL / SQL。 问题答案: 如果您假设小数部分是根据给 定年份中的天数 (即365或366,取决于是否是leap年)来计算的,则可以执行以下操作:

  • 问题内容: 是否有一个内置的转换方法为在Python,例如获得在指定日期的午夜?相反的转换很容易:有一个方法。 我真的必须手动打电话吗? 问题答案: 您可以使用;现在,您创建一个初始化为午夜的对象。

  • 周日->明谷-0 周一->赛宁-1 周二->Selasa-2 帮我谢谢