проблема с памятью искрового драйвера на конвейере ML - PullRequest
0 голосов
/ 07 июня 2018

я запускаю конвейер логистической регрессии и на этой строке:

model = pipeline.fit(train_data)

я получаю многократно следующую ошибку на этапе RDDLossFunction:

File "/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 File" /usr/spark-2.3.0/python/lib/pyspark.zip/pyspark/ml/base.py ", строка 132, в fit File" /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 ГБ) больше, чем spark.driver.maxResultSize (3,0 ГБ) в 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) илиspark.scheduler.DAGScheduler $$ anonfun $ abortStage $ 1.apply (DAGScheduler.scala: 1586) в scala.collection.mutable.ResizableArray $ class.foreach (ResizableArray.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 (DAGSchell).в 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.sparkSc1769) в 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: 21):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 $ treeAggregate $ 1.apply (RDD.scala: 1155) в org.apache.spark.rdd.RDDOperationScope $ .withScope (RDDOperationScope.scala: 151) в org.apache.spark.rdd.RDDOperationScope $ .withScope (RDDOperationScope.scala:) в 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.CachedDiffFunction.calculate (CachedDiffFunction).at 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.mlression.raala 7) в 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) при получении повторного обращения.Java: 43) на java.lang.reflect.Method.invoke (Method.java:498) на py4j.reflection.MethodInvoker.invoke (MethodInvoker.java:244) на py4j.reflection.ReflectionEngine.invoke (ReflectionEngine.java:35)) в 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) в java.lang.Thread.run (Thread.java:748))

Я попытался уменьшить номер раздела с 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 рабочих, объединенные 140 ГБ, один мастер с 15 ГБ.

1 Ответ

0 голосов
/ 09 июня 2018

В журнале ошибок четко указано: 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?

...