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