首页 > 解决方案 > 机器学习管道上的火花驱动程序内存问题

问题描述

我正在运行逻辑回归管道并在这条线上:

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 行,在 _fit 文件中 "/usr/spark-2.3.0/python/lib/pyspark.zip/pyspark/ml/base.py",第 132 行,在 fit 文件中“/usr/spark-2.3.0/python/lib/pyspark.zip/pyspark/ml/wrapper.py”,第 288 行,在 _fit 文件中“/usr/spark-2.3.0/python/lib/pyspark.zip /pyspark/ml/wrapper.py”,第 285 行,在 _fit_java 文件中“/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_value py4j.protocol.Py4JJavaError:调用 o23199.fit 时出错。:org.apache.spark.SparkException:作业因阶段失败而中止:9个任务(3.4 GB)的序列化结果的总大小大于org.apache.spark.scheduler.DAGScheduler的spark.driver.maxResultSize(3.0 GB) .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。

我已尝试将分区号从 2001 降低到 400 ,如https://translate.google.co.il/translate?hl=en&sl=zh-CN&u=http://bourneli.github.io/scala/spark中所建议/2016/09/21/spark-driver-maxResultSize-puzzle.html&prev=search ,但得到了同样的错误。还尝试将 spark.driver.maxResultSize 增加到 3g - 也不好。

我有 2 个管道,一个用于准备数据,在整个数据集上完成,第二个只包含 LogisticRegression 和 labelconverter (IndexToString) - 是失败的。

我在一个独立的集群上运行,3 个工作人员,140GB 的组合,一个 15GB 的主机。

标签: apache-sparkpysparkapache-spark-mllib

解决方案


错误日志清楚地说Total size of serialized results of 9 tasks (3.4 GB) is bigger than spark.driver.maxResultSize (3.0 GB)

您是否尝试过更改spark.driver.maxResultSize大于 3.4 G?


推荐阅读