【发布时间】:2017-01-26 02:55:14
【问题描述】:
我有一个数据框 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(),但我收到错误,因为它需要数组或映射类型。
我认为这应该是一种常见的操作。
【问题讨论】:
标签: apache-spark dataframe pyspark apache-spark-sql apache-spark-ml