首页 > 解决方案 > 如果针对 Spark Dataframe 指定样本,withReplacement 会做什么

问题描述

阅读火花文档:http ://spark.apache.org/docs/2.1.0/api/python/pyspark.sql.html#pyspark.sql.DataFrame.sample

有这个布尔参数withReplacement没有太多解释。

样本(有替换,分数,种子=无)

它是什么以及我们如何使用它?

标签: apache-spark

解决方案


该参数withReplacement控制结果的唯一性sample。如果我们将数据集视为一桶球,withReplacement=true则意味着从桶中取出一个随机球并将其放回其中。这意味着,可以再次捡起同一个球。

假设数据集中的所有唯一元素:

  • withReplacement=true, 由于 的结果,可以多次产生相同的元素sample

  • withReplacement=false,数据集的每个元素只会被采样一次。

       import spark.implicits._
    
        val df = Seq(1, 2, 3, 5, 6, 7, 8, 9, 10).toDF("ids")
    
        df.show()
    
        df.sample(true, 0.5, 5)
          .show
    
        df.sample(false, 0.5, 5)
          .show
    

    结果

    +---+
    |ids|
    +---+
    |  1|
    |  2|
    |  3|
    |  5|
    |  6|
    |  7|
    |  8|
    |  9|
    | 10|
    +---+
    
    +---+
    |ids|
    +---+
    |  6|
    |  7|
    |  7|
    |  9|
    | 10|
    +---+
    
    +---+
    |ids|
    +---+
    |  1|
    |  3|
    |  7|
    |  8|
    |  9|
    +---+
    

推荐阅读