繁体   English   中英

如何选择RDD中每个键时间最久的数据?

[英]How to select data with the oldest time per key in RDD?

我有一个带有两个变量IDtime的RDD。 time采用datetime.datetime格式。 这是RDD数据的头部扫描:

 [[41186, datetime.datetime(2014, 3, 1, 20, 48, 5, 630000)],
 [32036, datetime.datetime(2014, 3, 2, 0, 25, 41, 950000)],
 [41186, datetime.datetime(2014, 3, 2, 0, 31, 29, 380000)],
 [40479, datetime.datetime(2014, 3, 2, 0, 39, 6, 800000)],
 [4598, datetime.datetime(2014, 3, 2, 1, 48, 47, 430000)]]

一个ID将在数据文件中以不同的日期时间出现多次,我只想选择时间最远的每个ID

例如,在上面的示例数据中,我只需要选择:

 [[41186, datetime.datetime(2014, 3, 1, 20, 48, 5, 630000)],
 [32036, datetime.datetime(2014, 3, 2, 0, 25, 41, 950000)],
 [40479, datetime.datetime(2014, 3, 2, 0, 39, 6, 800000)],
 [4598, datetime.datetime(2014, 3, 2, 1, 48, 47, 430000)]]

如何编写查询以获取此输出? 谢谢。

使用groupByKey并应用min

print(rdd.groupByKey().mapValues(min).collect())
#[(41186, datetime.datetime(2014, 3, 1, 20, 48, 5, 630000)),
# (32036, datetime.datetime(2014, 3, 2, 0, 25, 41, 950000)),
# (4598, datetime.datetime(2014, 3, 2, 1, 48, 47, 430000)),
# (40479, datetime.datetime(2014, 3, 2, 0, 39, 6, 800000))]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM