所以假设我有一个3000行的rdd。 2000个第一行是1类,最后1000行是class2。 RDD分区为100个分区。
致电RDD.randomSplit(0.8,0.2)
该功能是否也会改变rdd?我们的分裂只是连续20%的rdd样品?或者是随机选择20%的分区?
理想情况下,生成的拆分与原始RDD具有相同的类分布。 (即2:1)
由于
答案 0 :(得分:29)
对于weights
数组定义的每个范围,都有一个单独的mapPartitionsWithIndex
转换,可以保留分区。
使用一组BernoulliCellSamplers
对每个分区进行采样。对于每个拆分,它迭代给定分区的元素,并选择项,如果下一个随机Double
的值在由标准化权重定义的给定范围内。给定分区的所有采样器使用相同的RNG种子。它意味着: