scala - Scala - Spark - 如何获得具有数据框列的不同值和该不同值的第一个日期的新数据框?
问题描述
我有一个具有以下架构的 Spark 数据框:
________________________
|id | no | date |
|1 | 123 |2018/10/01 |
|2 | 124 |2018/10/01 |
|3 | 123 |2018/09/28 |
|4 | 123 |2018/09/27 |
...我想要的是拥有一个包含以下数据的新 DataFrame:
___________________
| no | date |
| 123 |2018/09/27 |
| 124 |2018/10/01 |
有人可以帮我吗?:)谢谢!
解决方案
您可以通过使用spark sql 的数据框上的排名(https://databricks.com/blog/2015/07/15/introducing-window-functions-in-spark-sql.html )来解决它:
用于诸如registerTempTable
_sparkContext
df_temp_table
进行以下查询:
select dftt.*,
dense_rank() OVER ( PARTITION BY dftt.no ORDER BY dftt.date DESC) AS Rank from
df_temp_table as dftt
你会得到这个数据框:
|id | no | date | rank
|1 | 123 |2018/10/01 | 1
|2 | 124 |2018/10/01 | 1
|3 | 123 |2018/09/28 | 2
|4 | 123 |2018/09/27 | 3
在这个 df 上,您现在可以按 1 过滤排名列
推荐阅读
- android - 没有来自网络的用户交互,Android 应用程序链接不起作用
- python - 遍历目录中的所有文件并从每个文件中获取平均值
- python - 创建包含特定列中条目的列表
- javascript - React Native 版本不匹配 - APK 有效,aab 无效
- join - kylin 是否更新连接表上的聚合
- php - 如何在表格的开头添加新行而不是在底部添加?
- javascript - React - 在完全不同的组件上调用 setState 时输入失去焦点
- java - 错误:不兼容的类型:
无法转换为 BaseOnTabSelectedListener - javascript - 如何在 react.js 中使用锚 id 标签历史
- excel - 从一个工作表中提取数据到另一个工作表