Вы можете увидеть этот ответ для получения дополнительной информации о значении дроби в rdd.sample ().Короче говоря, это представляет вероятность получения образца.Это означает, что окончательное значение rdd не будет гарантированно равным указанной дроби * оригинального размера.
Я бы подошел к этому в противоположном направлении:
- Сначала создайте RDD, который является просто исходным RDD, повторенным несколько раз
- Теперь, образец изчто RDD до размера, который вы хотите.
Что-то вроде:
val rdds = (1 to 10).map(_ => originalRdd)
val bigRdd = sc.union(rdds)
val sampledRdd = bigRdd.sample(true, fraction, seed)
и установите дробь так, чтобы конечный СДР соответствовал нужному размеру:
val fraction = numResultsIWant/100*originalRdd.count()
и мы выбрали 10
потому что это было количество копий СДР, которые мы создали.