Apache spark ML管道上的spark驱动程序内存问题

Apache spark ML管道上的spark驱动程序内存问题,apache-spark,pyspark,apache-spark-mllib,Apache Spark,Pyspark,Apache Spark Mllib,我正在运行LogisticReturnal管道,在这条线上: model = pipeline.fit(train_data) 我在RDDLossFunction阶段反复出现以下错误: 文件“/usr/spark-2.3.0/python/lib/pyspark.zip/pyspark/ml/base.py”,第132行,适合 文件“/usr/spark-2.3.0/python/lib/pyspark.zip/pyspark/ml/pipeline.py”,第109行,以 文件“/usr/s

我正在运行LogisticReturnal管道,在这条线上:

model = pipeline.fit(train_data)
我在RDDLossFunction阶段反复出现以下错误:

文件“/usr/spark-2.3.0/python/lib/pyspark.zip/pyspark/ml/base.py”,第132行,适合 文件“/usr/spark-2.3.0/python/lib/pyspark.zip/pyspark/ml/pipeline.py”,第109行,以 文件“/usr/spark-2.3.0/python/lib/pyspark.zip/pyspark/ml/base.py”,第132行,适合 文件“/usr/spark-2.3.0/python/lib/pyspark.zip/pyspark/ml/wrapper.py”,第288行,格式为 java文件“/usr/spark-2.3.0/python/lib/pyspark.zip/pyspark/ml/wrapper.py”,第285行 文件“/usr/spark-2.3.0/python/lib/py4j-0.10.6-src.zip/py4j/java_gateway.py”,第1160行,在调用中 文件“/usr/spark-2.3.0/python/lib/pyspark.zip/pyspark/sql/utils.py”,第63行,deco格式 文件“/usr/spark-2.3.0/python/lib/py4j-0.10.6-src.zip/py4j/protocol.py”,第320行,在get_return_值中 py4j.protocol.Py4JJavaError:调用o23199.fit时出错。 :org.apache.spark.sparkeexception:作业因阶段失败而中止:9个任务的序列化结果的总大小(3.4 GB)大于spark.driver.maxResultSize(3.0 GB) 位于org.apache.spark.scheduler.DAGScheduler.org$apache$spark$scheduler$DAGScheduler$$failJobAndIndependentStages(DAGScheduler.scala:1599) 位于org.apache.spark.scheduler.DAGScheduler$$anonfun$abortStage$1.apply(DAGScheduler.scala:1587) 位于org.apache.spark.scheduler.DAGScheduler$$anonfun$abortStage$1.apply(DAGScheduler.scala:1586) 位于scala.collection.mutable.resizeblearray$class.foreach(resizeblearray.scala:59) 位于scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:48) 位于org.apache.spark.scheduler.DAGScheduler.abortStage(DAGScheduler.scala:1586) 位于org.apache.spark.scheduler.DAGScheduler$$anonfun$handleTaskSetFailed$1.apply(DAGScheduler.scala:831) 位于org.apache.spark.scheduler.DAGScheduler$$anonfun$handleTaskSetFailed$1.apply(DAGScheduler.scala:831) 位于scala.Option.foreach(Option.scala:257) 位于org.apache.spark.scheduler.DAGScheduler.handleTaskSetFailed(DAGScheduler.scala:831) 位于org.apache.spark.scheduler.DAGSchedulerEventProcessLoop.doOnReceive(DAGScheduler.scala:1820) 位于org.apache.spark.scheduler.DAGSchedulerEventProcessLoop.onReceive(DAGScheduler.scala:1769) 位于org.apache.spark.scheduler.DAGSchedulerEventProcessLoop.onReceive(DAGScheduler.scala:1758) 位于org.apache.spark.util.EventLoop$$anon$1.run(EventLoop.scala:48) 位于org.apache.spark.scheduler.DAGScheduler.runJob(DAGScheduler.scala:642) 位于org.apache.spark.SparkContext.runJob(SparkContext.scala:2027) 位于org.apache.spark.SparkContext.runJob(SparkContext.scala:2124) 位于org.apache.spark.rdd.rdd$$anonfun$fold$1.apply(rdd.scala:1092) 位于org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:151) 位于org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:112) 位于org.apache.spark.rdd.rdd.withScope(rdd.scala:363) 位于org.apache.spark.rdd.rdd.fold(rdd.scala:1086) 在org.apache.spark.rdd.rdd$$anonfun$treeaggegate$1.apply上(rdd.scala:1155) 位于org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:151) 位于org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:112) 位于org.apache.spark.rdd.rdd.withScope(rdd.scala:363) 位于org.apache.spark.rdd.rdd.treeAggregate(rdd.scala:1131) 位于org.apache.spark.ml.optim.loss.RDDLossFunction.calculate(RDDLossFunction.scala:61) 位于org.apache.spark.ml.optim.loss.RDDLossFunction.calculate(RDDLossFunction.scala:47) 在breeze.optimize.cacheddiffffunction.calculate(cacheddiffffunction.scala:23) 在breeze.optimize.FirstOrderMinimizer.calculateObjective(FirstOrderMinimizer.scala:55) 在breeze.optimize.FirstOrderMinimizer.initialState(FirstOrderMinimizer.scala:48) 在breeze.optimize.FirstOrderMinimizer.iterations(FirstOrderMinimizer.scala:89) 位于org.apache.spark.ml.classification.LogisticRegression.train(LogisticRegression.scala:798) 位于org.apache.spark.ml.classification.LogisticRegression.train(LogisticRegression.scala:488) 位于org.apache.spark.ml.classification.LogisticRegression.train(LogisticRegression.scala:278) 位于org.apache.spark.ml.Predictor.fit(Predictor.scala:118) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中 位于java.lang.reflect.Method.invoke(Method.java:498) 位于py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244) 位于py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:357) 在py4j.Gateway.invoke处(Gateway.java:282) 位于py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132) 在py4j.commands.CallCommand.execute(CallCommand.java:79) 在py4j.GatewayConnection.run处(GatewayConnection.java:214) 运行(Thread.java:748)

我曾尝试将分区号从2001降到400,如中所建议的,但得到了相同的错误。 还尝试将spark.driver.maxResultSize增加到3g-也没有什么好处

我有两条管道,一条用于准备数据,这是在整个数据集上完成的,第二条管道仅包括LogisticRegression&labelconverter(IndexToString)——是失败的管道


我在一个独立的集群上运行,3个工作线程,加起来有140GB,一个主机有15GB。

错误日志清楚地表明
9个任务(3.4GB)的序列化结果的总大小大于spark.driver.maxResultSize(3.0GB)

<