Ich habe eine UDF erstellt, aber ich muss eine Funktion innerhalb einer UDF aufrufen. Es gibt derzeit Nullen zurück. Könnte jemand bitte erklären, warum ich diesen Fehler bekomme.PySpark - Aufruf einer Funktion innerhalb einer UDF
a= spark.createDataFrame([("A", 20), ("B", 30), ("D", 80)],["Letter", "distances"])
def get_number(num):
return range(num)
from pyspark.sql.functions import udf
def cate(label):
if label == 20:
counting_list = get_number(4)
return counting_list
else:
return [0]
udf_score=udf(cate, ArrayType(FloatType()))
a.withColumn("category_list", udf_score(a["distances"])).show(10)
aus:
+------+---------+--------------------+
|Letter|distances| category_list|
+------+---------+--------------------+
| A| 20|[null, null, null...|
| B| 30| [null]|
| D| 80| [null]|
+------+---------+--------------------+
Sie erwähnen nicht, wenn Sie Python verwenden 2 oder Python 3? 'range()' verhält sich in Python 3 anders als in Python 2. –
Ich benutze Python 2 –