说明
根据指定的规则从数据集中抽取数据
应用场景
经过 filter、groupBy 算子运算后,数据可能会出现倾斜(即:某个分区的数据量特别大),通过sample算子采样出一份样本来
声明
def sample(
withReplacement: Boolean,
fraction: Double,
seed: Long = Utils.random.nextLong): RDD[T]
参数:
withReplacement:
true:为泊松算法,抽取的数据放回。即:随机数据可能重复
false:伯努利算法,抽取的数据不放回。即:随机数据不重复
fraction:
withReplacement 为 true:重复数据的几率,范围大于等于 0.表示每一个元素被期望抽取到的次数
withReplacement 为 false:抽取的几率,范围在[0,1]之间,0:全不取;1:全取;
seed:随机数种子,默认为随机数。当调试程序时,才设置固定值
例子
val sparConf = new SparkConf().setMaster("local[*]").setAppName("RDD")
val sc = new SparkContext(sparConf)
val rdd:RDD[Int] = sc.makeRDD(List(1,2,3,4,5))
val resRDD: RDD[Int] = rdd.sample(false,0.4)
resRDD.foreach(println)
sc.stop()
执行结果:
4
2
5
每次执行,抽取的数据不一样