我有一个名为df
的数据框,其中有一个名为features
的VectorUDT
列。如何获取该列的一个元素,例如第一个元素?
我尝试过以下方法:
from pyspark.sql.functions import udf
first_elem_udf = udf(lambda row: row.values[0])
df.select(first_elem_udf(df.features)).show()
但我遇到了一个net.razorvine.pickle.PickleException: expected zero arguments for construction of ClassDict(for numpy.dtype)
的错误。如果我使用first_elem_udf = first_elem_udf(lambda row: row.toArray()[0])
,也会遇到同样的错误。
我还尝试过使用explode()
函数,但是因为它需要数组或映射类型而出现了错误。
我认为这应该是一个常见的操作。
Caused by: org.apache.spark.SparkException: Python worker exited unexpectedly (crashed)
的错误信息。有什么线索吗? - haneulkim