如何解决如何汇总爆炸行的pyspark中的体验持续时间?
我已将json数据分解为结构化格式。现在我要计算多行用户的experience_expdurration?我们如何汇总同一用户的多行的总体验时间?任何建议都将为您提供充分的帮助
数据CSV文件格式
fullName,Experience_datesEmployeed,Experience_expdescription,Experience_expduraation
Jonathan,Aug 2010 – Dec 2010,Porfolio Manager,5 mos
Jonathan,Dec 2011 – May 2016,Provided investor,4 yrs 6 mos
Jonathan,May 2016 – Present,4 yrs 4 mos
Jonathan,May 2007 – Nov 2008,1 yr 7 mos
解决方法
尝试一下。我对正则表达式不好,所以无论如何都看起来不好。
val regexp1 = "(\\d?)( yr | yrs )"
val regexp2 = "(\\d?)( mos| mo)"
df.withColumn("years",regexp_extract($"Experience_expduraation",regexp1,1).cast("int"))
.withColumn("months",regexp2,1).cast("int"))
.na.fill(0)
.withColumn("totalMonths",$"years" * lit(12) + $"months")
.groupBy("fullName")
.agg(sum("totalMonths").as("totalMonths"))
.show
+--------+-----------+
|fullName|totalMonths|
+--------+-----------+
|Jonathan| 135|
+--------+-----------+
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。