Joseph K. Bradley created SPARK-15419:
-----------------------------------------

             Summary: monotonicallyIncreasingId should use less memory with 
multiple partitions
                 Key: SPARK-15419
                 URL: https://issues.apache.org/jira/browse/SPARK-15419
             Project: Spark
          Issue Type: Improvement
          Components: SQL
    Affects Versions: 2.0.0
         Environment: branch-2.0, 1 worker
            Reporter: Joseph K. Bradley


When monotonicallyIncreasingId is used on a DataFrame with many partitions, it 
uses a very large amount of memory.

Consider this code:
{code}
import org.apache.spark.sql.functions._

// JMAP1: run jmap -histo:live [PID]

val numPartitions = 1000
val df = spark.range(0, 1000000, 1, numPartitions).toDF("vtx")
df.cache().count()

// JMAP2: run jmap -histo:live [PID]

val df2 = df.withColumn("id", monotonicallyIncreasingId())
df2.cache().count()

// JMAP3: run jmap -histo:live [PID]
{code}

Here's how memory usage progresses:
* JMAP1: This is just for calibration.
* JMAP2: No significant change from 1.
* JMAP3: Massive jump: 3048895 Longs, 1039638 Objects, 2007427 Integers, 
1002000 org.apache.spark.sql.catalyst.expressions.GenericInternalRow
** None of these had significant numbers of instances in JMAP1/2.

When the indexed DataFrame is used repeatedly afterwards, the driver memory 
usage keeps increasing and eventually blows up in my application.

Presumably this memory usage could be reduced.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to