PickleException: expected zero arguments for construction of ClassDict (for numpy.dtype)

张开慧

问题:spark使用numpy实现的udf报错。

版本

Spark 2.2.1
Python 2.7.11
NumPy 1.11.3

现象

用numpy实现了一个udf

alt

udf注册到sparkSession

alt

sparkSql使用这个udf

alt

抛出异常

net.razorvine.pickle.PickleException: expected zero arguments for construction of ClassDict (for numpy.dtype)

alt

解决方法

udf返回时,用python的函数转一下,问题解决。

alt

上spark官网查看了一下文档,spark 2.2.0文档里面有一段

alt

也就是说2.2.0后的sparkSql不能使用数据类型为numpy内置的dtype的数据!