Ответ 1
Для каждого диапазона, определенного массивом weights
, существует отдельное преобразование mapPartitionsWithIndex
, которое сохраняет разделение.
Каждый раздел выбирается с помощью набора BernoulliCellSamplers
. Для каждого разделения он выполняет итерацию по элементам данного раздела и выбирает элемент, если значение следующего случайного Double
находится в заданном диапазоне, определяемом нормализованными весами. Все пробоотборники для данного раздела используют одно и то же семя RNG. Это означает:
- не перетасовывает RDD
- не принимает непрерывных блоков, кроме случайных
- принимает произвольную выборку из каждого раздела
- принимает неперекрывающиеся образцы
- требуется передача n-split по данным