Я пытаюсь выполнить 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
.