我有以下Spark数据集:
id col1 col2 col3 col4
1 1 5 2 3
1 1 0 2 3
2 3 1 7 7
3 6 1 3 3
3 6 5 3 3
我想删除columns subset ['id,'col1 ','col3','col4 ']中的重复项,并保留col2中具有最高值的重复行。
id col1 col2 col3 col4
1 1 5 2 3
2 3 1 7 7
3 6 5 3 3
在PySpark中我怎么做呢?
3条答案
按热度按时间mzsu5hc01#
分组并得到col2的最大值
fjnneemd2#
另一种方法是计算max,filter,其中max=col2。这允许您保留条件为真的多个示例
gkl3eglg3#
如果你更熟悉SQL语法而不是PySpark Dataframe API,你可以这样做:
创建 Dataframe (可选,因为您已经有数据)
然后创建一个 Dataframe 的视图来运行SQL查询。下面创建一个新的临时 Dataframe 视图,名为“tbl”。
最后用视图编写一个SQL查询,这里我们按id、col1、col3和col4分组,然后选择col2的最大值所在的行。
最终输出: