更换火花样品方法的原理是什么?

时间:2018-11-22 11:23:12

标签: scala apache-spark pyspark rdd

我正在研究Spark,但对sample()方法有疑问。 如您所知,sample()带有三个参数

sample( withReplacement : boolean, Fraction : Double, seed : Long )

withReplacement为True时,我听不懂第二个fraction

在文档中,它表示每个元素替换提取的期望值。

如果我在分数中输入2,而RDD有10个元素,它如何在内部采样?原理是什么? (我知道这不能保证采样数量为20)

请帮助我理解。

1 个答案:

答案 0 :(得分:3)

通过替换Spark is using PoissonSampler实现采样。它会根据Poisson distribution生成数字,以确定在生成新值之前采样器应跳过多少个项目。

分数越高,泊松分布的lambda参数越低,换句话说,步长为0的可能性就越大,我们再次采用相同的项。

Poisson distribution depending on lambda

WikipediaSkbkekas中的图片。

请参阅sampler source code以查看确切过程。