PicklingError: Не удалось сериализовать объект: Исключение: похоже, вы пытаетесь сослаться на SparkContext из широковещательной переменной - PullRequest
0 голосов
/ 25 января 2020

"PicklingError: Не удалось сериализовать объект: Исключение: создается впечатление, что вы пытаетесь сослаться на SparkContext из широковещательной переменной, действия или преобразования. SparkContext можно использовать только в драйвере, но не в коде, который он запускает на рабочих. Для получения дополнительной информации см. SPARK-5063. "

Я получаю сообщение об ошибке выше, когда я пытаюсь запустить мой код. Я надеюсь, что этот пример может объяснить, что я пытаюсь сделать .. У меня есть минусы файл, в котором у меня есть все имена столбцов, и здесь я пытаюсь добавить метки к результату, который я получаю из моего последнего вывода. получая ошибку в udf_get_Status (examresults_table.marks_obtained) эта строка не уверена, что я попытался udf_get_Status (cons.COL_marks_obtained) все тот же

def get_status(self,marks_obtained)
   marks_obtained = int(marks_obtained)
   if marks_obtained == 0:
      return "failed"
   if marks_obtained > 0 and marks_obtained <35:
      return "pass"
   else:
      return "good_grade"

def create marks_sheet_table(self,student_information,examresults):
   student_information = student_information.select(cons.COL_NAME ,cons.COL_ID)
   examresults = examresults.select(cons.COL_ID ,cons.COL_marks_obtained)
   examresults_table = student_information.join(student_information['COL_ID'])
   udf_get_Status = udf(self.get_status,stringtype())
   result_status_label = examresults_table.withcolumn(cons.COL_status_label,udf_get_Status(examresults_table.marks_obtained))


...