You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@spark.apache.org by "Josh Rosen (Jira)" <ji...@apache.org> on 2022/06/23 01:10:00 UTC
[jira] [Commented] (SPARK-17728) UDFs are run too many times
[ https://issues.apache.org/jira/browse/SPARK-17728?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17557756#comment-17557756 ]
Josh Rosen commented on SPARK-17728:
------------------------------------
As of SPARK-36718 in Spark 3.3 I think the {{explode(array(udf()))}} trick should no longer be needed: Spark will avoid collapsing projections which would lead to duplication of expensive-to-evaluate expressions.
There still might be some rare cases where you might need that trick (e.g. to work around SPARK-38485), but I think most cases should be addressed by Spark 3.3's improved CollapseProject optimizer rule.
> UDFs are run too many times
> ---------------------------
>
> Key: SPARK-17728
> URL: https://issues.apache.org/jira/browse/SPARK-17728
> Project: Spark
> Issue Type: Bug
> Components: Spark Core
> Affects Versions: 2.0.0
> Environment: Databricks Cloud / Spark 2.0.0
> Reporter: Jacob Eisinger
> Priority: Minor
> Attachments: over_optimized_udf.html
>
>
> h3. Background
> Llonger running processes that might run analytics or contact external services from UDFs. The response might not just be a field, but instead a structure of information. When attempting to break out this information, it is critical that query is optimized correctly.
> h3. Steps to Reproduce
> # Create some sample data.
> # Create a UDF that returns a multiple attributes.
> # Run UDF over some data.
> # Create new columns from the multiple attributes.
> # Observe run time.
> h3. Actual Results
> The UDF is executed *multiple times* _per row._
> h3. Expected Results
> The UDF should only be executed *once* _per row._
> h3. Workaround
> Cache the Dataset after UDF execution.
> h3. Details
> For code and more details, see [^over_optimized_udf.html]
--
This message was sent by Atlassian Jira
(v8.20.7#820007)
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@spark.apache.org
For additional commands, e-mail: issues-help@spark.apache.org