Wenchen Fan created SPARK-59855:
-----------------------------------

             Summary: Analyze long withColumns chains in one pass and remove 
the eager analysis in Spark Connect
                 Key: SPARK-59855
                 URL: https://issues.apache.org/jira/browse/SPARK-59855
             Project: Spark
          Issue Type: Improvement
          Components: SQL
    Affects Versions: 5.0.0
            Reporter: Wenchen Fan


Spark Connect plans each withColumns / withColumnsRenamed call lazily as 
Project(Seq(UnresolvedStarWithColumns(...)), child) (SPARK-50601), so a loop of 
df = df.withColumn(...) becomes a stack of such Projects. The fixed-point 
analyzer resolves at most one of them per iteration of the Resolution batch, 
and a chain of about 100 calls hits spark.sql.analyzer.maxIterations. 
SPARK-53505 worked around this by eagerly analyzing each withColumns in the 
Connect planner, which is quadratic and binds the plan when it's built (e.g. 
pipeline flows lose their dependency on datasets that already exist in the 
catalog).

This ticket makes the analyzer resolve a lazily planned withColumns as soon as 
its child is resolved, in isolation from the child plan, so the whole chain is 
resolved in one pass, and removes the eager analysis from the Connect planner.




--
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