Я пытаюсь использовать линейную регрессию на простом фрейме данных с одной функцией и одной меткой , используя pyspark Python в Databricks. Тем не менее, я сталкиваюсь с некоторыми проблемами с отказом стадии. Я рассмотрел много подобных проблем, но большинство из них в Scala или выходят за рамки того, что я здесь делаю.
Версии:
Записная книжка: блоки данных
5.3 (включает Apache Spark 2.4.0, Scala 2.11)
Версия Python: 2
Вот что я сделал:
- Исходный кадр данных выглядит следующим образом:
df_red = df_extra.select('cca3', 'class', 'device_id').groupby('cca3').pivot('class').count()
display(df_red)
Я хочу, чтобы столбец 'mac' был моей меткой, а столбец 'other' - моей отдельной функцией.
2. Удалите столбец 'cca3' и создайте метку / элемент
features = ['other']
lr_data = df_red.drop('cca3').select(col('mac').alias('label'), *features)
display(lr_data)
- Создать Vector Assembler и удалить нулевые значения в кадре данных
assembler = VectorAssembler(inputCols = features, outputCol = "features")
output = assembler.transform(lr_data)
new_lr_data = output.select("label", "features").where(col('label').isNotNull())
new_lr_data.show()
- Подход модели линейной регрессии:
# Fit the model
lr = LinearRegression(maxIter=10, regParam=0.3, elasticNetParam=0.8)
lrModel = lr.fit(new_lr_data)
# Print the coefficients and intercept for linear regression
print("Coefficients: %s" % str(lrModel.coefficients))
print("Intercept: %s" % str(lrModel.intercept))
# Summarize the model over the training set and print out some metrics
trainingSummary = lrModel.summary
#print("numIterations: %d" % trainingSummary.totalIterations)
#print("objectiveHistory: %s" % str(trainingSummary.objectiveHistory))
#trainingSummary.residuals.show()
#print("RMSE: %f" % trainingSummary.rootMeanSquaredError)
#print("r2: %f" % trainingSummary.r2)
В этот момент я получаю ошибку ниже:
org.apache.spark.SparkException: задание прервано из-за сбоя этапа:
Задача 73 на этапе 979.0 не выполнена 1 раз, последний сбой: потерянная задача
73.0 на этапе 979.0 (TID 32624, localhost, драйвер исполнителя): org.apache.spark.SparkException: не удалось выполнить пользовательский режим
Функция ($ anonfun $ 4:
(struct ) =>
структура <тип: TINYINT, размер: ИНТ, индексы: массив <int>, значения: массив >)
Что вызывает вышеуказанную ошибку в Databricks? Может ли это быть из-за того, что я использовал только одну функцию, а не многие функции (обычно так)?
Любая помощь очень ценится!