gpt4 book ai didi

numpy - 是否可以在Spark Dataframe列中存储一个numpy数组?

转载 作者:行者123 更新时间:2023-12-04 08:54:20 24 4
gpt4 key购买 nike

我有一个dataframe,我对其应用了一个函数。此函数返回一个numpy array,其代码如下所示:

create_vector_udf = udf(create_vector, ArrayType(FloatType()))
dataframe = dataframe.withColumn('vector', create_vector_udf('text'))
dmoz_spark_df.select('lang','url','vector').show(20)

现在Spark似乎对此不满意,并且不接受 ArrayType(FloatType())我收到以下错误消息: net.razorvine.pickle.PickleException: expected zero arguments for construction of ClassDict (for numpy.core.multiarray._reconstruct)
我可以只使用 numpyarray.tolist()并返回它的列表版本,但是很明显,如果我想将其与 array一起使用,我总是必须重新创建 numpy

那么有没有办法将 numpy array存储在 dataframe column中呢?

最佳答案

问题的根源是从UDF返回的对象不符合声明的类型。 create_vector不仅必须返回numpy.ndarray,而且还必须将数字转换为与DataFrame API不兼容的相应NumPy类型。

唯一的选择是使用这样的东西:

udf(lambda x: create_vector(x).tolist(), ArrayType(FloatType()))

关于numpy - 是否可以在Spark Dataframe列中存储一个numpy数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44965762/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com