Искра UDF, вызывающая прерывание работы - PullRequest
0 голосов
/ 17 января 2020

Я пытаюсь выполнить очень простые операции UDF с фреймом данных, и у меня возникают ошибки

Я работаю с примером прямо из PySpark API, единственное отличие состоит в том, что я использую разные данные ( и это мое не работает)

Вот мой DF:

parq.show(3)

+-------------------+---+----------+---------+--------------------+------+--------------+----------------+---------+---------+---------+-------------------+--------+
|  registration_dttm| id|first_name|last_name|               email|gender|    ip_address|              cc|  country|birthdate|   salary|              title|comments|
+-------------------+---+----------+---------+--------------------+------+--------------+----------------+---------+---------+---------+-------------------+--------+
|2016-02-03 07:55:29|  1|    Amanda|   Jordan|    ajordan0@com.com|Female|   1.197.201.2|6759521864920116|Indonesia| 3/8/1971| 49756.53|   Internal Auditor|   1E+02|
|2016-02-03 17:04:03|  2|    Albert|  Freeman|     afreeman1@is.gd|  Male|218.111.175.34|                |   Canada|1/16/1968|150280.17|      Accountant IV|        |
|2016-02-03 01:09:31|  3|    Evelyn|   Morgan|emorgan2@altervis...|Female|  7.161.136.94|6767119071901597|   Russia| 2/1/1960|144972.51|Structural Engineer|        |
+-------------------+---+----------+---------+--------------------+------+--------------+----------------+---------+---------+---------+-------------------+--------+

Вот соответствующая запись схемы:

parq.printSchema()
 |-- salary: double (nullable = true)

Затем выполните простую операцию udf возвести в квадрат столбец окладов

square_udf = F.udf(lambda z: z**2, DoubleType())
parq.select(square_udf(F.col("salary"))).show(10)

Это дает: org.apache.spark.SparkException: Job aborted due to stage failure ...

На мой взгляд, нет абсолютно никакой причины, по которой это следует делать, если кто-то мог бы прояснить мое мышление, что было бы большой.

1 Ответ

0 голосов
/ 17 января 2020

Спасибо @Gocht за проверку моего кода и за то, что он работает. У меня в столбце зарплаты были помехи, поэтому я сначала запустил:

parq_nn = parq.select("*").where("salary is not null")

И это сработало

...