python - 如何在 RDD 中选择每个键的最旧时间的数据?
问题描述
我有一个带有两个变量的 RDDID
和time
. 是格式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))]
推荐阅读
- python - Python-表示每列的n个值
- javascript - 如何在重定向 React 上重新加载页面
- php - 有没有一种简单的方法来实现类似 Translator 的字符串选择器?
- c++ - 如何获得输入
- java - 更改 java.security 中 jdk.tls.disabledAlgorithms 属性中的 DH keySize 会导致切换服务器选择的密码和 TLS 版本
- java - Android 是否有与 Java 的 Desktop.getDesktop() 类似的类来打开文件或提示用户选择应用程序关联?
- r - 绘制 glmer 中所有变量的预测概率
- vue.js - Vuetify.js shaped card being overridden by v-sheet
- docker - 在 Docker 中运行时向 Solr 添加字段?
- php - 无效的数据表格式:谷歌条形图上必须至少有 2 列