小编Igo*_*her的帖子

在 pyspark 中删除重复项时进行聚合

我想分组聚合一个 pyspark 数据框,同时根据该数据框的另一列删除重复项(保留最后一个值)

总之,我想将 dropDuplicates 应用于 GroupedData 对象。因此,对于每个组,我只能动态地保留某一列的一行。

例子

对于下面的数据帧,直接的组聚合将是:

from pyspark.sql import functions

dataframe = spark.createDataFrame(
    [
        (1, "2020-01-01", 1, 1),
        (2, "2020-01-01", 2, 1),
        (3, "2020-01-02", 1, 1),
        (2, "2020-01-02", 1, 1)
    ],
    ("id", "ts", "feature", "h3")
).withColumn("ts", functions.col("ts").cast("timestamp"))

# +---+-------------------+-------+---+
# | id|                 ts|feature| h3|
# +---+-------------------+-------+---+
# |  1|2020-01-01 00:00:00|      1|  1|
# |  2|2020-01-01 00:00:00|      2|  1|
# |  3|2020-01-02 00:00:00|      1|  1|
# |  2|2020-01-02 00:00:00|      1|  1|
# +---+-------------------+-------+---+ …
Run Code Online (Sandbox Code Playgroud)

dataframe apache-spark apache-spark-sql pyspark databricks

6
推荐指数
1
解决办法
719
查看次数