SPARK Dataframes 上的采样方法是否统一采样?

SPARK Is sample method on Dataframes uniform sampling?

我想从数据框中随机选择 select 行数,我知道采样方法可以做到这一点,但我担心我的随机性应该是均匀采样?所以,我想知道Spark on Dataframes的示例方法是否统一?

谢谢

这里有几个代码路径:

  • 如果 withReplacement = false && fraction > .4 则它使用增强的随机数生成器 (rng.nextDouble() <= fraction) 并让它完成工作。 这看起来会很统一。
  • 如果 withReplacement = false && fraction <= .4 则它使用更复杂的算法 (GapSamplingIterator),该算法看起来也很统一。一看好像也应该是统一的
  • 如果 withReplacement = true 它确实接近同一件事,except it can duplicate by the looks of it所以在我看来它不像前两个那样统一

是的,它是统一的,有关更多信息,您可以尝试下面的代码。 我希望这能澄清。

我认为这应该可以解决问题,其中 "data" 是您的数据框。 val splits = data.randomSplit(数组(0.7, 0.3)) val (trainingData, testData) = (splits(0), splits(1))