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

版本

Spark 2.2.1 
Python 2.7.11 
NumPy 1.11.3

现象

用numpy实现了一个udf

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

udf注册到sparkSession

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

sparkSql使用这个udf

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

抛出异常

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

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

解决方法

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

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

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

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

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

转载:http://tech.dianwoda.com/2018/01/31/net-razorvine-pickle-pickleexception-expected-zero-arguments-for-construction-of-classdict-for-numpy-dtype/

相关文章:

  • 2021-12-07
  • 2021-04-16
  • 2021-08-12
  • 2022-12-23
  • 2022-12-23
  • 2021-04-20
  • 2021-07-31
  • 2021-05-16
猜你喜欢
  • 2022-12-23
  • 2021-07-04
  • 2021-10-11
  • 2021-07-22
  • 2022-12-23
相关资源
相似解决方案