相关疑难解决方法(0)

如何访问Spark DataFrame中VectorUDT列的元素?

我有一个数据帧dfVectorUDT指定的列features.如何获取列的元素,比如第一个元素?

我尝试过以下操作

from pyspark.sql.functions import udf
first_elem_udf = udf(lambda row: row.values[0])
df.select(first_elem_udf(df.features)).show()
Run Code Online (Sandbox Code Playgroud)

但是我收到了一个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()但我得到一个错误,因为它需要一个数组或地图类型.

我认为这应该是一种常见的操作.

dataframe apache-spark apache-spark-sql pyspark apache-spark-ml

16
推荐指数
1
解决办法
5886
查看次数

从pyspark中的dataframe ArrayType列获取前N个元素

我有一个火花数据帧,行为 -

1   |   [a, b, c]
2   |   [d, e, f]
3   |   [g, h, i]
Run Code Online (Sandbox Code Playgroud)

现在我想只保留数组列中的前2个元素.

1   |   [a, b]
2   |   [d, e]
3   |   [g, h]
Run Code Online (Sandbox Code Playgroud)

怎么能实现呢?

注意 - 请记住,我不是在这里提取单个数组元素,而是可能包含多个元素的数组的一部分.

apache-spark apache-spark-sql pyspark

5
推荐指数
1
解决办法
5782
查看次数