[ 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