我正在研究Spark,但对sample()方法有疑问。 如您所知,sample()带有三个参数
sample( withReplacement : boolean, Fraction : Double, seed : Long )
withReplacement为True时,我听不懂第二个fraction
。
在文档中,它表示每个元素替换提取的期望值。
如果我在分数中输入2,而RDD有10个元素,它如何在内部采样?原理是什么? (我知道这不能保证采样数量为20)
请帮助我理解。
答案 0 :(得分:3)
通过替换Spark is using PoissonSampler
实现采样。它会根据Poisson distribution生成数字,以确定在生成新值之前采样器应跳过多少个项目。
分数越高,泊松分布的lambda参数越低,换句话说,步长为0的可能性就越大,我们再次采用相同的项。
请参阅sampler source code以查看确切过程。