【发布时间】:2017-05-15 10:34:38
【问题描述】:
我在 Dataproc 上运行 PySpark 作业时遇到此错误。可能是什么原因?
这是错误的堆栈跟踪。
File "/usr/lib/python2.7/pickle.py", line 331, in save
self.save_reduce(obj=obj, *rv)
File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/cloudpickle.py",
line 553, in save_reduce
File "/usr/lib/python2.7/pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "/usr/lib/python2.7/pickle.py", line 649, in save_dict
self._batch_setitems(obj.iteritems())
File "/usr/lib/python2.7/pickle.py", line 681, in _batch_setitems
save(v)
File "/usr/lib/python2.7/pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/cloudpickle.py",
line 582, in save_file
pickle.PicklingError: Cannot pickle files that are not opened for reading
【问题讨论】:
-
我在 pyspark 中遇到了同样的问题。 @ramanand 你找到解决办法了吗?
-
是的,我正在阅读地图功能中的字典,但我还没有广播。所以原因是工作节点找不到该字典并引发 pickle 异常。
标签: pyspark pickle google-cloud-dataproc