Как работать на СДР по разделам? - PullRequest
0 голосов
/ 01 ноября 2018

Я хотел бы перераспределить данные с RDD[LabeledPoint] на K разделов и использовать раздел K для обучения соответственно K ml моделей.

Самая близкая операция, которую я знаю, может произвести это: .mapPartitionsWithIndex, но она возвращает Iterator[LabeledPoint], в то время как модель принимает RDD[LabeledPoint] в качестве ввода. Я думаю, что я могу преобразовать Iterator[LabeledPoint] в RDD[LabeledPoint], но это кажется избыточным конвертировать из RDD в Iterator и обратно.

Ниже приведено то, что я имею до сих пор.

val K = model.size // models:Array[(idx, Model)]
data.repartition(K) //RDD[LabeledPoint]
data.mapPartitionsWithIndex {
    case (i, dat) => {
        val datByPartition = dat // dat:Iterator[LabeledPoint]
        models(i).train(datByPartition) // however input of "train" needs to be RDD[LabeledPoint]
    ...
    }
}

Любые предложения будут с благодарностью!


Spark MLlib: построение классификаторов для каждой группы данных похоже на проблему, с которой я столкнулся, очевидно, к тому времени не было хорошего решения. Но это было 3 года назад, мне интересно, разрешимо ли это сейчас.

...