Spark DataFrame通过GroupBy删除重复项保持第一

Posted

技术标签:

【中文标题】Spark DataFrame通过GroupBy删除重复项保持第一【英文标题】:Spark DataFrame Removing duplicates via GroupBy keep first 【发布时间】:2016-11-23 00:30:05 【问题描述】:

我正在使用 groupBy 函数从 spark DataFrame 中删除重复项。对于每个组,我只想占据第一行,这将是最近的一行。

我不想执行max() 聚合,因为我知道结果已经按顺序存储在 Cassandra 中,并且希望避免不必要的计算。请参阅this approach 使用 pandas,这正是我所追求的,除了 Spark。

df = sqlContext.read\
            .format("org.apache.spark.sql.cassandra")\
            .options(table="table", keyspace="keyspace")\
            .load()\
            .groupBy("key")\
            #what goes here?

【问题讨论】:

【参考方案1】:

只需 dropDuplicates 即可完成这项工作。

试试df.dropDuplicates(Seq("column")).show

查看question了解更多详情。

【讨论】:

感谢您的回答。我实际上转而使用这种方法。 dropDuplicates(['column']) 也可以 @stacksonstacks 我会将其标记为已接受,因为它更直接地解决了您的根本问题,但您还应该重新命名问题。 @JustinPihony 你对重命名的标题有何建议? 获取每个分组在 DataFrame 或类似中的第一行? @stacksonstacks

以上是关于Spark DataFrame通过GroupBy删除重复项保持第一的主要内容,如果未能解决你的问题,请参考以下文章

Spark DataFrame 的 groupBy vs groupByKey

Apache Spark Dataframe Groupby agg() 用于多列

Spark DataFrame 的通用“reduceBy”或“groupBy + aggregate”功能

spark sql DataFrame 的 groupBy+agg 与 groupByKey+mapGroups

spark sql DataFrame 的 groupBy+agg 与 groupByKey+mapGroups

不能在 Spark DataFrame 中使用 orderBy 或 groupBy 函数