在 pyspark 中显示数据框不同值的最佳方法是啥?

Posted

技术标签:

【中文标题】在 pyspark 中显示数据框不同值的最佳方法是啥?【英文标题】:What's the best way to show distinct values for a dataframe in pyspark?在 pyspark 中显示数据框不同值的最佳方法是什么? 【发布时间】:2020-09-02 11:14:36 【问题描述】:

我想检查数据框的不同值,并且我知道有一种方法可以做到这一点。我想看看rabbitplatypusbook 列的唯一值。

这是第一种方式

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 中转换或处理日期数据类型的最佳方法是啥

从 pyspark 数据框中获取多个(100+)列的空计数、最小值和最大值的最佳方法

在单个 spark 数据框中减去两个字符串列的最佳 PySpark 实践是啥?

将 Pyspark 数据框转换为具有实际值的列表

我只需要在 pyspark 数据框中附加那些具有非空值的人

如何获取和比较pyspark中两个数据框中相似列的所有值的数据类型