You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@spark.apache.org by "Shixiong Zhu (JIRA)" <ji...@apache.org> on 2016/03/08 20:07:41 UTC

[jira] [Created] (SPARK-13747) Concurrent execution in SQL doesn't work with Scala ForkJoinPool

Shixiong Zhu created SPARK-13747:
------------------------------------

             Summary: Concurrent execution in SQL doesn't work with Scala ForkJoinPool
                 Key: SPARK-13747
                 URL: https://issues.apache.org/jira/browse/SPARK-13747
             Project: Spark
          Issue Type: Bug
          Components: SQL
    Affects Versions: 2.0.0
            Reporter: Shixiong Zhu


Run the following codes may fail
{code}
(1 to 100).par.foreach { _ =>
  println(sc.parallelize(1 to 5).map { i => (i, i) }.toDF("a", "b").count())
}

java.lang.IllegalArgumentException: spark.sql.execution.id is already set 
        at org.apache.spark.sql.execution.SQLExecution$.withNewExecutionId(SQLExecution.scala:87) 
        at org.apache.spark.sql.DataFrame.withNewExecutionId(DataFrame.scala:1904) 
        at org.apache.spark.sql.DataFrame.collect(DataFrame.scala:1385) 
{code}

This is because SparkContext.runJob can be suspended when using a ForkJoinPool (e.g.,scala.concurrent.ExecutionContext.Implicits.global) as it calls Await.ready.

So when SparkContext.runJob is suspended, ForkJoinPool will run another task in the same thread, however, the local properties has been polluted.



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

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