Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
-
None
Description
While running a custom algorithm on ~7TB data on Spark, I ran into the following OOM error. I am using the new MLContext and passing in Spark DataFrames with no provided dimensions. It's a difficult setup to reproduce, but we should look into this to see if there are improvements that could avoid OOM situations.
Stack trace:
java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Arrays.java:3181) at java.util.ArrayList.grow(ArrayList.java:261) at java.util.ArrayList.ensureExplicitCapacity(ArrayList.java:235) at java.util.ArrayList.ensureCapacityInternal(ArrayList.java:227) at java.util.ArrayList.add(ArrayList.java:458) at org.apache.sysml.runtime.instructions.spark.utils.RDDConverterUtilsExt$RowToBinaryBlockFunctionHelper.flushBlocksToList(RDDConverterUtilsExt.java:926) at org.apache.sysml.runtime.instructions.spark.utils.RDDConverterUtilsExt$RowToBinaryBlockFunctionHelper.convertToBinaryBlock(RDDConverterUtilsExt.java:862) at org.apache.sysml.runtime.instructions.spark.utils.RDDConverterUtilsExt$DataFrameToBinaryBlockFunction.call(RDDConverterUtilsExt.java:587) at org.apache.sysml.runtime.instructions.spark.utils.RDDConverterUtilsExt$DataFrameToBinaryBlockFunction.call(RDDConverterUtilsExt.java:574) at org.apache.spark.api.java.JavaRDDLike$$anonfun$fn$7$1.apply(JavaRDDLike.scala:192) at org.apache.spark.api.java.JavaRDDLike$$anonfun$fn$7$1.apply(JavaRDDLike.scala:192) at org.apache.spark.rdd.RDD$$anonfun$mapPartitions$1$$anonfun$apply$20.apply(RDD.scala:710) at org.apache.spark.rdd.RDD$$anonfun$mapPartitions$1$$anonfun$apply$20.apply(RDD.scala:710) at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:38) at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:306) at org.apache.spark.rdd.RDD.iterator(RDD.scala:270) at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:73) at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:41) at org.apache.spark.scheduler.Task.run(Task.scala:89) at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:214) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)