[ 
https://issues.apache.org/jira/browse/SPARK-8632?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15209743#comment-15209743
 ] 

Bijay Kumar Pathak edited comment on SPARK-8632 at 3/24/16 4:47 AM:
--------------------------------------------------------------------

I am still having this issue in Spark 1.6.0 on EMR. The job fails with OOM. I 
have DataFrame with 250 columns and I am applying UDF on more than 50 of the 
columns. I am registering the DataFrame as temptable and  applying the UDF in 
hive_context sql statement. I am applying the UDF after sort merge join of two 
DataFrame (each of around 4GB) and multiple broadcast joins of 22 Dim table.

Below is how I am applying the UDF.

{code:borderStyle=solid}
data_frame.registerTempTable("temp_table")
new_df = hive_context.sql("select python_udf(column_1),python_udf(column_2), 
... , from temp_table")
{code}


was (Author: bijay697):
I am still having this issue in Spark 1.6.0 on EMR. The job fails with OOM. I 
have DataFrame with 250 columns and I am applying UDF on more than 50 of the 
columns. I am registering the DataFrame as temptable and  applying the UDF in 
hive_context sql statement. I am applying the UDF after sort merge join of two 
DataFrame (each of around 4GB) and multiple broadcast joins of 22 Dim table.

Below is how I am applying the UDF.

{code:title=Bar.python|borderStyle=solid}
data_frame.registerTempTable("temp_table")
new_df = hive_context.sql("select python_udf(column_1),python_udf(column_2), 
... , from temp_table")
{code}

> Poor Python UDF performance because of RDD caching
> --------------------------------------------------
>
>                 Key: SPARK-8632
>                 URL: https://issues.apache.org/jira/browse/SPARK-8632
>             Project: Spark
>          Issue Type: Bug
>          Components: PySpark, SQL
>    Affects Versions: 1.4.0
>            Reporter: Justin Uang
>            Assignee: Davies Liu
>            Priority: Blocker
>             Fix For: 1.5.1, 1.6.0
>
>
> {quote}
> We have been running into performance problems using Python UDFs with 
> DataFrames at large scale.
> From the implementation of BatchPythonEvaluation, it looks like the goal was 
> to reuse the PythonRDD code. It caches the entire child RDD so that it can do 
> two passes over the data. One to give to the PythonRDD, then one to join the 
> python lambda results with the original row (which may have java objects that 
> should be passed through).
> In addition, it caches all the columns, even the ones that don't need to be 
> processed by the Python UDF. In the cases I was working with, I had a 500 
> column table, and i wanted to use a python UDF for one column, and it ended 
> up caching all 500 columns. 
> {quote}
> http://apache-spark-developers-list.1001551.n3.nabble.com/Python-UDF-performance-at-large-scale-td12843.html



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

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@spark.apache.org
For additional commands, e-mail: issues-h...@spark.apache.org

Reply via email to