【问题标题】: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)

标签: apache-spark pyspark apache-spark-sql apache-zeppelin


【解决方案1】:

.collect 会将所有结果返回给驱动程序,并在大数据集上导致 OOM 错误。

使用.distinct() 方法,如果您想计算不同的记录,请使用df.distinct().count()

【讨论】:

  • 如果我将 count.collect 替换为 distinct.count,听起来第三种方式最快
  • 谢谢你,非常感谢你在这个线程和其他线程上的帮助:)
猜你喜欢
  • 1970-01-01
  • 2017-01-15
  • 2022-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-09
相关资源
最近更新 更多