猿问

Spark - Python - 在 RDD 上获取年/月

我有一个带有两个元素(id,日期)的 RDD。具有以下结构:


data=sc.textFile("/user/cloudera/dates.txt")

1,01-01-2001

2,01-02-2001

3,01-03-2001

我想将我的 RDD 转换为:


1,01/2001

2,02/2001

3,03/2001

我怎样才能做到这一点?我尝试使用地图:


data.map(lambda l: (year(l[1]) + month(l[1])))

但是没有定义年和月


梦里花落0921
浏览 176回答 2
2回答

MYYA

尝试解析字符串日期,然后使用withColumn并获取解析的新日期列应用于每一行。您应该将函数定义为 a udfbefore 才能使用它。import datetimedef date_time_to_date(input_date_time):   new_date = datetime.datetime.strptime(input_date_time, "%d-%M-%Y").date()   return str(new_date.month) + "/"+ str(new_date.year)udf_date_time_to_date = udf(date_time_to_date, StringType())data.toDF(['id' , 'date']).withColumn('new_date', udf_date_time_to_date('date'))
随时随地看视频慕课网APP

相关分类

Python
我要回答