scala - 如何在 Spark 的另一列中找到每个唯一值的最大值?
问题描述
我的最终产品需要在一周中的每一天与当天活动最多的地方排成一行。即 Mon Place A 56、Wed Place C 64 等。我尝试使用 Window 功能并且正在使用 max 和 groupie,但我让自己感到困惑。
解决方案
Spark 3.0 引入了聚合函数max_by,它完全符合您的要求:
df.groupBy("day")
.agg(expr("max_by(place, number)"), max('number))
.show()
结果:
+-----+---------------------+-----------+
| day|max_by(place, number)|max(number)|
+-----+---------------------+-----------+
| Mon| Place B| 42|
| Wed| Place F| 54|
| Fri| Place E| 64|
|Thurs| Place D| 45|
+-----+---------------------+-----------+
推荐阅读
- python - 用值替换一些 html 内容
- reactjs - react-redux 调度未定义
- angular - 有没有办法以角度绑定到组件数组并使用 ngFor 渲染当前组件中的组件
- canvas - 在paperjs中将画布数据适合另一个画布
- node.js - node-pre-gyp install --fallback-to-build html-to-docx
- c - 如果有的话,哪一个是更好的方法?
- laravel - Laravel 7:将枢轴附加到具有多个值的表
- javafx - JavaFX 3D 有两个场景,两个摄像头查看相同的对象
- reactjs - 在 Google App Engine 中全局运行 MongoDB
- layout - Material UI 网格中的间距未按预期工作