SparkR org.apache.spark.SparkException: R работник неожиданно завершил работу - PullRequest
0 голосов
/ 02 мая 2018

Я пытаюсь выполнить SparkR gapply, по сути, когда я пытаюсь запустить это с моим входным файлом, ограниченным примерно 300k строк, он работает, однако, масштабируя до примерно 1,2 м строк, я получаю следующее повторяющееся исключение в stderr во многих исполнительных задачах - примерно 70% задач завершено, в то время как другие не выполнены или не выполнены. Неудачные имеют ту же ошибку:

org.apache.spark.SparkException: R worker exited unexpectedly (cranshed)
    at org.apache.spark.api.r.RRunner.org$apache$spark$api$r$RRunner$$read(RRunner.scala:240)
    at org.apache.spark.api.r.RRunner$$anon$1.next(RRunner.scala:91)
    at scala.collection.Iterator$$anon$11.next(Iterator.scala:409)
    at scala.collection.Iterator$$anon$11.next(Iterator.scala:409)
    at org.apache.spark.sql.catalyst.expressions.GeneratedClass$GeneratedIterator.agg_doAggregateWithKeys$(Unknown Source)
    at org.apache.spark.sql.catalyst.expressions.GeneratedClass$GeneratedIterator.processNext(Unknown Source)
    at org.apache.spark.sql.execution.BufferedRowIterator.hasNext(BufferedRowIterator.java:43)
    at org.apache.spark.sql.execution.WholeStageCodegenExec$$anonfun$8$$anon$1.hasNext(WholeStageCodegenExec.scala:395)
    at scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:408)
    at org.apache.spark.shuffle.sort.BypassMergeSortShuffleWriter.write(BypassMergeSortShuffleWriter.java:125)
    at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:96)
    at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:53)
    at org.apache.spark.scheduler.Task.run(Task.scala:108)
    at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:346)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.io.EOFException
    at java.io.DataInputStream.readInt(DataInputStream.java:392)
    at org.apache.spark.api.r.RRunner.org$apache$spark$api$r$RRunner$$read(RRunner.scala:212)
    ... 16 more

Какие параметры настройки следует учитывать помимо выделения дополнительной памяти? Я считаю, что SparkR не так широко используется, как PySpark или Scala, и иногда их параметры настройки могут отличаться, поэтому любая помощь здесь будет принята с благодарностью.

Он работает в кластере Databricks / AWS - 20 рабочих узлов, 30,5 ГБ памяти, 4 ядра каждый.

В нашем случае использования функция gapply работает на макс. 10 строках данных-строк, разделяется на макс. 20 столбцов на 4 R-кадра данных, которые затем подаются в решатель линейной оптимизации с использованием R-пакетов NlcOptim,quadprog.

...