我有一个格式为[(ID,Date),(ID,Date)...]的元组列表,日期格式为datetime。作为RDD的示例,我正在使用:
[('1',datetime.date(2012,1,01)),('2',('3',('4',('5',('1',datetime.date(2011,datetime.date(2013,datetime.date(2015,datetime.date(2010,datetime.date(2018,01))]
我需要收集ID和与每个ID相关联的最短日期。大概这是一个reduceByKey
动作,但是我无法整理出相关的功能。我猜想我只是在使事情复杂化,但是在识别适当的lambda(如果reduceByKey
在这种情况下不是最有效的方法)方面,将不胜感激。
我已经搜索了StackOverflow并找到了类似的答案here,here和here,但是同样,我无法成功修改这些答案以适合我的特定情况。通常,datetime格式似乎会使事情复杂化(datetime格式本身是由于我解析xml的方式所致,因此,如果有帮助,我可以回过头将其解析为字符串)。
我尝试了以下操作,但均收到错误消息:
.reduceByKey(min)
-IndexError:元组索引超出范围
reduceByKey(lambda x,y: (x,min(y)))
-IndexError:元组索引超出范围(如果datetime转换为字符串,或者如果日期时间格式转换为下面的错误)
.reduceByKey(lambda x,y: (x[0],min(y)))
-TypeError:“ datetime.date”对象不可下标
我希望最终结果如下:
[('1',01))]