Рандомизация Dataframe или RDD для обучения ML в Spark
Как я могу случайным образом перетасовать свои тренировочные данные для классификатора Spark?
Прямо сейчас у меня есть dataframe, где первые N строк от положительного класса, а остальные M строк от отрицательного класса, и я пытаюсь обучить pyspark.mllib.classification.LogisticRegressionWithSGD.
Если я рандомизирую фрейм данных, используя orderBy(rand()):
lr = LogisticRegressionWithSGD()
train_data = train_data.orderBy(rand())
model = lr.train(train_data.map(lambda r: LabeledPoint(float(r.label), r.features)))
Spark будет аварийно завершать работу с ошибками, связанными с недетерминированными вычислениями (предположительно, потому что он будет повторно выполнять orderBy(rand()) в середине обучения).