如题,我的系统是CentOS7,python3.6.8,pyhanlp版本0.1.63;
我在pyspark中map函数使用或者pyflink的udf中使用时都会报错TypeError: can’t pickle _jpype.PyJPClass objects,具体error提示如下,求教下是哪里需要处理下吗;同样的代码调用jieba没有问题的;
Traceback (most recent call last):
File "/usr/lib64/python3.6/pickle.py", line 269, in _getattribute
obj = getattr(obj, subpath)
AttributeError: module 'jpype._jclass' has no attribute 'com'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib64/python3.6/pickle.py", line 918, in save_global
obj2, parent = _getattribute(module, name)
File "/usr/lib64/python3.6/pickle.py", line 272, in _getattribute
.format(name, obj))
AttributeError: Can't get attribute 'com.hankcs.hanlp.HanLP' on <module 'jpype._jclass' from '/usr/local/lib64/python3.6/site-packages/jpype/_jclass.py'>
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/root/wyl/soft/spark-2.4.5-bin-hadoop2.7/python/pyspark/cloudpickle.py", line 635, in save_global
return Pickler.save_global(self, obj, name=name)
File "/usr/lib64/python3.6/pickle.py", line 922, in save_global
(obj, module_name, name))
_pickle.PicklingError: Can't pickle <class 'jpype._jclass.com.hankcs.hanlp.HanLP'>: it's not found as jpype._jclass.com.hankcs.hanlp.HanLP
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib64/python3.6/pickle.py", line 269, in _getattribute
obj = getattr(obj, subpath)
AttributeError: module 'jpype._jclass' has no attribute 'java'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib64/python3.6/pickle.py", line 918, in save_global
obj2, parent = _getattribute(module, name)
File "/usr/lib64/python3.6/pickle.py", line 272, in _getattribute
.format(name, obj))
AttributeError: Can't get attribute 'java.lang.Object' on <module 'jpype._jclass' from '/usr/local/lib64/python3.6/site-packages/jpype/_jclass.py'>
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/root/wyl/soft/spark-2.4.5-bin-hadoop2.7/python/pyspark/cloudpickle.py", line 635, in save_global
return Pickler.save_global(self, obj, name=name)
File "/usr/lib64/python3.6/pickle.py", line 922, in save_global
(obj, module_name, name))
_pickle.PicklingError: Can't pickle <class 'jpype._jclass.java.lang.Object'>: it's not found as jpype._jclass.java.lang.Object
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/root/wyl/soft/spark-2.4.5-bin-hadoop2.7/python/pyspark/serializers.py", line 597, in dumps
return cloudpickle.dumps(obj, 2)
File "/root/wyl/soft/spark-2.4.5-bin-hadoop2.7/python/pyspark/cloudpickle.py", line 863, in dumps
cp.dump(obj)
File "/root/wyl/soft/spark-2.4.5-bin-hadoop2.7/python/pyspark/cloudpickle.py", line 260, in dump
return Pickler.dump(self, obj)
File "/usr/lib64/python3.6/pickle.py", line 409, in dump
self.save(obj)
File "/usr/lib64/python3.6/pickle.py", line 476, in save
f(self, obj) # Call unbound method with explicit self
File "/usr/lib64/python3.6/pickle.py", line 751, in save_tuple
save(element)
File "/usr/lib64/python3.6/pickle.py", line 476, in save
f(self, obj) # Call unbound method with explicit self
File "/root/wyl/soft/spark-2.4.5-bin-hadoop2.7/python/pyspark/cloudpickle.py", line 406, in save_function
self.save_function_tuple(obj)
File "/root/wyl/soft/spark-2.4.5-bin-hadoop2.7/python/pyspark/cloudpickle.py", line 549, in save_function_tuple
save(state)
File "/usr/lib64/python3.6/pickle.py", line 476, in save
f(self, obj) # Call unbound method with explicit self
File "/usr/lib64/python3.6/pickle.py", line 821, in save_dict
self._batch_setitems(obj.items())
File "/usr/lib64/python3.6/pickle.py", line 847, in _batch_setitems
save(v)
File "/usr/lib64/python3.6/pickle.py", line 476, in save
f(self, obj) # Call unbound method with explicit self
File "/usr/lib64/python3.6/pickle.py", line 781, in save_list
self._batch_appends(obj)
File "/usr/lib64/python3.6/pickle.py", line 805, in _batch_appends
save(x)
File "/usr/lib64/python3.6/pickle.py", line 476, in save
f(self, obj) # Call unbound method with explicit self
File "/root/wyl/soft/spark-2.4.5-bin-hadoop2.7/python/pyspark/cloudpickle.py", line 406, in save_function
self.save_function_tuple(obj)
File "/root/wyl/soft/spark-2.4.5-bin-hadoop2.7/python/pyspark/cloudpickle.py", line 549, in save_function_tuple
save(state)
File "/usr/lib64/python3.6/pickle.py", line 476, in save
f(self, obj) # Call unbound method with explicit self
File "/usr/lib64/python3.6/pickle.py", line 821, in save_dict
self._batch_setitems(obj.items())
File "/usr/lib64/python3.6/pickle.py", line 847, in _batch_setitems
save(v)
File "/usr/lib64/python3.6/pickle.py", line 476, in save
f(self, obj) # Call unbound method with explicit self
File "/usr/lib64/python3.6/pickle.py", line 781, in save_list
self._batch_appends(obj)
File "/usr/lib64/python3.6/pickle.py", line 805, in _batch_appends
save(x)
File "/usr/lib64/python3.6/pickle.py", line 476, in save
f(self, obj) # Call unbound method with explicit self
File "/root/wyl/soft/spark-2.4.5-bin-hadoop2.7/python/pyspark/cloudpickle.py", line 406, in save_function
self.save_function_tuple(obj)
File "/root/wyl/soft/spark-2.4.5-bin-hadoop2.7/python/pyspark/cloudpickle.py", line 549, in save_function_tuple
save(state)
File "/usr/lib64/python3.6/pickle.py", line 476, in save
f(self, obj) # Call unbound method with explicit self
File "/usr/lib64/python3.6/pickle.py", line 821, in save_dict
self._batch_setitems(obj.items())
File "/usr/lib64/python3.6/pickle.py", line 847, in _batch_setitems
save(v)
File "/usr/lib64/python3.6/pickle.py", line 476, in save
f(self, obj) # Call unbound method with explicit self
File "/usr/lib64/python3.6/pickle.py", line 781, in save_list
self._batch_appends(obj)
File "/usr/lib64/python3.6/pickle.py", line 808, in _batch_appends
save(tmp[0])
File "/usr/lib64/python3.6/pickle.py", line 476, in save
f(self, obj) # Call unbound method with explicit self
File "/root/wyl/soft/spark-2.4.5-bin-hadoop2.7/python/pyspark/cloudpickle.py", line 400, in save_function
self.save_function_tuple(obj)
File "/root/wyl/soft/spark-2.4.5-bin-hadoop2.7/python/pyspark/cloudpickle.py", line 549, in save_function_tuple
save(state)
File "/usr/lib64/python3.6/pickle.py", line 476, in save
f(self, obj) # Call unbound method with explicit self
File "/usr/lib64/python3.6/pickle.py", line 821, in save_dict
self._batch_setitems(obj.items())
File "/usr/lib64/python3.6/pickle.py", line 847, in _batch_setitems
save(v)
File "/usr/lib64/python3.6/pickle.py", line 476, in save
f(self, obj) # Call unbound method with explicit self
File "/usr/lib64/python3.6/pickle.py", line 821, in save_dict
self._batch_setitems(obj.items())
File "/usr/lib64/python3.6/pickle.py", line 847, in _batch_setitems
save(v)
File "/usr/lib64/python3.6/pickle.py", line 476, in save
f(self, obj) # Call unbound method with explicit self
File "/root/wyl/soft/spark-2.4.5-bin-hadoop2.7/python/pyspark/cloudpickle.py", line 400, in save_function
self.save_function_tuple(obj)
File "/root/wyl/soft/spark-2.4.5-bin-hadoop2.7/python/pyspark/cloudpickle.py", line 549, in save_function_tuple
save(state)
File "/usr/lib64/python3.6/pickle.py", line 476, in save
f(self, obj) # Call unbound method with explicit self
File "/usr/lib64/python3.6/pickle.py", line 821, in save_dict
self._batch_setitems(obj.items())
File "/usr/lib64/python3.6/pickle.py", line 847, in _batch_setitems
save(v)
File "/usr/lib64/python3.6/pickle.py", line 476, in save
f(self, obj) # Call unbound method with explicit self
File "/usr/lib64/python3.6/pickle.py", line 821, in save_dict
self._batch_setitems(obj.items())
File "/usr/lib64/python3.6/pickle.py", line 852, in _batch_setitems
save(v)
File "/usr/lib64/python3.6/pickle.py", line 521, in save
self.save_reduce(obj=obj, *rv)
File "/usr/lib64/python3.6/pickle.py", line 634, in save_reduce
save(state)
File "/usr/lib64/python3.6/pickle.py", line 476, in save
f(self, obj) # Call unbound method with explicit self
File "/usr/lib64/python3.6/pickle.py", line 821, in save_dict
self._batch_setitems(obj.items())
File "/usr/lib64/python3.6/pickle.py", line 847, in _batch_setitems
save(v)
File "/usr/lib64/python3.6/pickle.py", line 490, in save
self.save_global(obj)
File "/root/wyl/soft/spark-2.4.5-bin-hadoop2.7/python/pyspark/cloudpickle.py", line 644, in save_global
return self.save_dynamic_class(obj)
File "/root/wyl/soft/spark-2.4.5-bin-hadoop2.7/python/pyspark/cloudpickle.py", line 487, in save_dynamic_class
self.save_reduce(tp, (obj.__name__, obj.__bases__, type_kwargs), obj=obj)
File "/usr/lib64/python3.6/pickle.py", line 610, in save_reduce
save(args)
File "/usr/lib64/python3.6/pickle.py", line 476, in save
f(self, obj) # Call unbound method with explicit self
File "/usr/lib64/python3.6/pickle.py", line 736, in save_tuple
save(element)
File "/usr/lib64/python3.6/pickle.py", line 476, in save
f(self, obj) # Call unbound method with explicit self
File "/usr/lib64/python3.6/pickle.py", line 736, in save_tuple
save(element)
File "/usr/lib64/python3.6/pickle.py", line 490, in save
self.save_global(obj)
File "/root/wyl/soft/spark-2.4.5-bin-hadoop2.7/python/pyspark/cloudpickle.py", line 644, in save_global
return self.save_dynamic_class(obj)
File "/root/wyl/soft/spark-2.4.5-bin-hadoop2.7/python/pyspark/cloudpickle.py", line 491, in save_dynamic_class
save(clsdict)
File "/usr/lib64/python3.6/pickle.py", line 476, in save
f(self, obj) # Call unbound method with explicit self
File "/usr/lib64/python3.6/pickle.py", line 821, in save_dict
self._batch_setitems(obj.items())
File "/usr/lib64/python3.6/pickle.py", line 847, in _batch_setitems
save(v)
File "/usr/lib64/python3.6/pickle.py", line 496, in save
rv = reduce(self.proto)
TypeError: can't pickle _jpype.PyJPClass objects