Pyspark / Databricks - org.apache.spark.SparkException: задание прервано из-за сбоя этапа: - PullRequest
1 голос
/ 08 июля 2019

Я пытаюсь использовать линейную регрессию на простом фрейме данных с одной функцией и одной меткой , используя pyspark Python в Databricks. Тем не менее, я сталкиваюсь с некоторыми проблемами с отказом стадии. Я рассмотрел много подобных проблем, но большинство из них в Scala или выходят за рамки того, что я здесь делаю.

Версии:

Записная книжка: блоки данных 5.3 (включает Apache Spark 2.4.0, Scala 2.11) Версия Python: 2

Вот что я сделал:

  1. Исходный кадр данных выглядит следующим образом:
    df_red = df_extra.select('cca3', 'class', 'device_id').groupby('cca3').pivot('class').count()

    display(df_red)

enter image description here

Я хочу, чтобы столбец 'mac' был моей меткой, а столбец 'other' - моей отдельной функцией.

2. Удалите столбец 'cca3' и создайте метку / элемент

features = ['other']
lr_data = df_red.drop('cca3').select(col('mac').alias('label'), *features)
display(lr_data)

enter image description here

  1. Создать 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()

enter image description here

  1. Подход модели линейной регрессии:
# 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? Может ли это быть из-за того, что я использовал только одну функцию, а не многие функции (обычно так)?

Любая помощь очень ценится!

...