在 pyspark 中显示数据框不同值的最佳方法是啥?
Posted
技术标签:
【中文标题】在 pyspark 中显示数据框不同值的最佳方法是啥?【英文标题】:What's the best way to show distinct values for a dataframe in pyspark?在 pyspark 中显示数据框不同值的最佳方法是什么? 【发布时间】:2020-09-02 11:14:36 【问题描述】:我想检查数据框的不同值,并且我知道有一种方法可以做到这一点。我想看看rabbit
、platypus
和book
列的唯一值。
这是第一种方式
mydf
.select("rabbit", "platypus", "book")
.distinct
.show
这是第二种方式
mydf
.select("rabbit", "platypus", "book")
.distinct
.count
这是另一种方式
val rabbit = mydf.groupByKey(log =>
val rabbit = mydf.rabbit
rabbit
).count.collect
val platypus = mydf.groupByKey(log =>
val platypus = mydf.platypus
platypus
).count.collect
val book = mydf.groupByKey(log =>
val book = mydf.book
book
).count.collect
【问题讨论】:
您也可以尝试.dropDuplicates()
或在其中添加列dropDuplicates(colNames)
【参考方案1】:
.collect
会将所有结果返回给驱动程序,并在大数据集上导致 OOM 错误。
使用.distinct()
方法,如果您想计算不同的记录,请使用df.distinct().count()
。
【讨论】:
如果我将 count.collect 替换为 distinct.count,听起来第三种方式最快 谢谢你,非常感谢你在这个线程和其他线程上的帮助:)以上是关于在 pyspark 中显示数据框不同值的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章
从 pyspark 数据框中获取多个(100+)列的空计数、最小值和最大值的最佳方法