[
https://issues.apache.org/jira/browse/SPARK-47819?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Xi Lyu updated SPARK-47819:
---------------------------
Description:
Expired sessions are regularly checked and cleaned up by a maintenance thread.
However, currently, this process is synchronous. Therefore, in occasional
cases, interrupting the execution thread of a query in a session can take
hours, causing the entire maintenance process to stall, resulting in a large
amount of memory not being cleared.
We address this by introducing asynchronous callbacks for execution cleanup,
avoiding synchronous joins of execution threads, and preventing the maintenance
thread from stalling in the above occasional scenarios.
was:
Expired sessions are regularly checked and cleaned up by a maintenance thread.
However, currently, this process is synchronous. Therefore, in occasional
cases, interrupting the execution thread of a query in a session can take
hours, causing the entire maintenance process to stall, resulting in a large
amount of memory not being cleared.
We address this by introducing asynchronous callbacks for execution cleanup,
avoiding synchronous joins of execution threads, and preventing the maintenance
thread from stalling in the above occasional scenarios.
A minimal example of the problem:
{code:java}
import pyspark.sql.functions as F
df = spark.range(10)
for i in range(200):
if str(i) not in df.columns: # <-- The df.columns call causes a new Analyze
request in every iteration
df = df.withColumn(str(i), F.col("id") + i)
df.show() {code}
> Use asynchronous callback for execution cleanup
> -----------------------------------------------
>
> Key: SPARK-47819
> URL: https://issues.apache.org/jira/browse/SPARK-47819
> Project: Spark
> Issue Type: Improvement
> Components: Connect
> Affects Versions: 4.0.0
> Reporter: Xi Lyu
> Priority: Major
> Fix For: 4.0.0
>
>
> Expired sessions are regularly checked and cleaned up by a maintenance
> thread. However, currently, this process is synchronous. Therefore, in
> occasional cases, interrupting the execution thread of a query in a session
> can take hours, causing the entire maintenance process to stall, resulting in
> a large amount of memory not being cleared.
> We address this by introducing asynchronous callbacks for execution cleanup,
> avoiding synchronous joins of execution threads, and preventing the
> maintenance thread from stalling in the above occasional scenarios.
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]