我正在使用带有Spark 2.2和Python 2.7.11的Pyspark,我正在尝试使用.toDebugString
方法从随机森林分类器的决策树中提取规则。
我有成功,但是自2.1更新到2.2以来,我使用此命令后发生了Spark崩溃,并且得到此错误:
完整错误:
rfModel.toDebugString
)有30棵树 n tr' 在处理('127.0.0.1',42374)的请求期间发生了例外 Trackback(最近的最新电话): 文件"/usr/local/lib/python2.7/socketserver.py",第295行,in _handle_request_noblock self.process_request(请求,client_address) 文件"/usr/local/lib/python2.7/socketserver.py",第321行,in Process_request self.finish_request(请求,client_address) 文件"/usr/local/lib/python2.7/socketserver.py",第334行,in finish_request self.RequestHandlerClass(请求,client_address,self) 文件"/usr/local/lib/python2.7/socketserver.py",第655行, in Init self.handle() 文件"/opt/cloudera/parcels/spark2/lib/spark2/python/pyspark/accumulators.py", 第235行,手柄 num_updates = read_int(self.rfile) 文件"/opt/cloudera/parcels/spark2/lib/spark2/python/pyspark/serializers.py", 第577行,在read_int中 ----------------------------------------------------------- 提高eoferror eoferror
如果我在此错误后再次运行命令,我会得到:
py4jerror:调用O1129.ToString时发生错误
我的代码相当简单,这使我非常困惑。
#Get random forest from pipeline
rfModel = model.stages[1]
rfModel.toDebugString
我知道rfmodel是一个Random ForestClassifier对象。有什么想法为什么我会遇到这个错误?
解决我问题的解决方案是Python版本。通过将Python3 与Spark 2.2一起使用,我设法工作了.todebugstring方法没有问题。我将使用完整的错误日志更新,以便任何人将来看到此内容。