dharani_sugumar created SPARK-46105:
---------------------------------------

             Summary: df.emptyDataFrame shows 1 if we repartition
                 Key: SPARK-46105
                 URL: https://issues.apache.org/jira/browse/SPARK-46105
             Project: Spark
          Issue Type: Bug
          Components: Spark Core
    Affects Versions: 3.3.3
         Environment: EKS

EMR
            Reporter: dharani_sugumar


{color:#FF0000}Version: 3.3.3{color}

 

{color:#FF0000}scala> val df = spark.emptyDataFrame{color}
{color:#FF0000}df: org.apache.spark.sql.DataFrame = []{color}

{color:#FF0000}scala> df.rdd.getNumPartitions{color}
{color:#FF0000}res0: Int = 0{color}

{color:#FF0000}scala> df.repartition(1).rdd.getNumPartitions{color}
{color:#FF0000}res1: Int = 1{color}

{color:#FF0000}scala> df.repartition(1).rdd.isEmpty(){color}
{color:#FF0000}[Stage 1:>                                                       
   (0 + 1) /                                                                    
         res2: Boolean = true{color}

Version: 3.2.4

scala> val df = spark.emptyDataFrame
df: org.apache.spark.sql.DataFrame = []

scala> df.rdd.getNumPartitions
res0: Int = 0

scala> df.repartition(1).rdd.getNumPartitions
res1: Int = 0

scala> df.repartition(1).rdd.isEmpty()
res2: Boolean = true

 

{color:#FF0000}Version: 3.5.0{color}

{color:#FF0000}scala> val df = spark.emptyDataFrame{color}
{color:#FF0000}df: org.apache.spark.sql.DataFrame = []{color}

{color:#FF0000}scala> df.rdd.getNumPartitions{color}
{color:#FF0000}res0: Int = 0{color}

{color:#FF0000}scala> df.repartition(1).rdd.getNumPartitions{color}
{color:#FF0000}res1: Int = 1{color}

{color:#FF0000}scala> df.repartition(1).rdd.isEmpty(){color}
{color:#FF0000}[Stage 1:>                                                       
   (0 + 1) /                                                                    
         res2: Boolean = true{color}

 

When we do repartition of 1 on an empty dataframe, the resultant partition is 1 
in version 3.3.x and 3.5.x whereas when I do the same in version 3.2.x, the 
resultant partition is 0. May i know why this behaviour is changed from 3.2.x 
to higher versions. 

 

The reason for raising this as a bug is I have a scenario where my final 
dataframe returns 0 records in EKS(local spark) with single node(driver and 
executor on the sam node) but it returns 1 in EMR both uses a same spark 
version 3.3.3. I'm not sure why this behaves different in both the 
environments. As a interim solution, I had to repartition a empty dataframe if 
my final dataframe is empty which returns 1 for 3.3.3. Would like to know if 
this really a bug or this behaviour exists in the future versions and cannot be 
changed?

 

Because, If we go for a spark upgrade and this behaviour is changed, we will 
face the issue again. 

Please confirm on this.

 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

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

Reply via email to