You are viewing a plain text version of this content. The canonical link for it is here.
Posted to reviews@spark.apache.org by HyukjinKwon <gi...@git.apache.org> on 2018/02/26 15:56:18 UTC

[GitHub] spark pull request #20680: [SPARK-23517][PYTHON] Make `pyspark.util._excepti...

GitHub user HyukjinKwon opened a pull request:

    https://github.com/apache/spark/pull/20680

    [SPARK-23517][PYTHON] Make `pyspark.util._exception_message` produce the trace from Java side by Py4JJavaError

    ## What changes were proposed in this pull request?
    
    This PR proposes for `pyspark.util._exception_message` to produce the trace from Java side by `Py4JJavaError`.
    
    Currently, in Python 2, it uses `message` attribute which `Py4JJavaError` didn't happen to have:
    
    ```python
    >>> from pyspark.util import _exception_message
    >>> try:
    ...     sc._jvm.java.lang.String(None)
    ... except Exception as e:
    ...     pass
    ...
    >>> e.message
    ''
    ```
    
    Seems we should use `str` instead for now:
    
     https://github.com/bartdag/py4j/blob/aa6c53b59027925a426eb09b58c453de02c21b7c/py4j-python/src/py4j/protocol.py#L412
    
    but this doesn't address the problem with non-ascii string from Java side -
     `https://github.com/bartdag/py4j/issues/306`
    
    So, we could directly call `__str__()`:
    
    ```python
    >>> e.__str__()
    u'An error occurred while calling None.java.lang.String.\n: java.lang.NullPointerException\n\tat java.lang.String.<init>(String.java:588)\n\tat sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)\n\tat sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)\n\tat sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)\n\tat java.lang.reflect.Constructor.newInstance(Constructor.java:422)\n\tat py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:247)\n\tat py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:357)\n\tat py4j.Gateway.invoke(Gateway.java:238)\n\tat py4j.commands.ConstructorCommand.invokeConstructor(ConstructorCommand.java:80)\n\tat py4j.commands.ConstructorCommand.execute(ConstructorCommand.java:69)\n\tat py4j.GatewayConnection.run(GatewayConnection.java:214)\n\tat java.lang.Thread.run(Thread.java:745)\n'
    ```
    
    which doesn't corse unicodes to `str` in Python 2.
    
    This can be actually a problem:
    
    ```python
    from pyspark.sql.functions import udf
    spark.conf.set("spark.sql.execution.arrow.enabled", True)
    spark.range(1).select(udf(lambda x: [[]])()).toPandas()
    ```
    
    **Before**
    
    ```
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/.../spark/python/pyspark/sql/dataframe.py", line 2009, in toPandas
        raise RuntimeError("%s\n%s" % (_exception_message(e), msg))
    RuntimeError:
    Note: toPandas attempted Arrow optimization because 'spark.sql.execution.arrow.enabled' is set to true. Please set it to false to disable this.
    ```
    
    **After**
    
    ```
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/.../spark/python/pyspark/sql/dataframe.py", line 2009, in toPandas
        raise RuntimeError("%s\n%s" % (_exception_message(e), msg))
    RuntimeError: An error occurred while calling o47.collectAsArrowToPython.
    : org.apache.spark.SparkException: Job aborted due to stage failure: Task 7 in stage 0.0 failed 1 times, most recent failure: Lost task 7.0 in stage 0.0 (TID 7, localhost, executor driver): org.apache.spark.api.python.PythonException: Traceback (most recent call last):
      File "/.../spark/python/pyspark/worker.py", line 245, in main
        process()
      File "/.../spark/python/pyspark/worker.py", line 240, in process
    ...
    Note: toPandas attempted Arrow optimization because 'spark.sql.execution.arrow.enabled' is set to true. Please set it to false to disable this.
    ```
    
    
    ## How was this patch tested?
    
    Manually tested and unit tests were added.

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/HyukjinKwon/spark SPARK-23517

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/spark/pull/20680.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #20680
    
----
commit 2d3c321f8be2de4cdca5a654b3f0a6a20a29dc2c
Author: hyukjinkwon <gu...@...>
Date:   2018-02-26T15:47:57Z

    Make pyspark.util._exception_message produce the trace from Java side for Py4JJavaError

----


---

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


[GitHub] spark issue #20680: [SPARK-23517][PYTHON] Make `pyspark.util._exception_mess...

Posted by HyukjinKwon <gi...@git.apache.org>.
Github user HyukjinKwon commented on the issue:

    https://github.com/apache/spark/pull/20680
  
    Merged to master and branch-2.3.
    
    Thanks for reviewing this, @ueshin, @viirya, @BryanCutler, and @holdenk.


---

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


[GitHub] spark issue #20680: [SPARK-23517][PYTHON] Make `pyspark.util._exception_mess...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20680
  
    Test PASSed.
    Refer to this link for build results (access rights to CI server needed): 
    https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution/1064/
    Test PASSed.


---

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


[GitHub] spark issue #20680: [SPARK-23517][PYTHON] Make `pyspark.util._exception_mess...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20680
  
    Merged build finished. Test PASSed.


---

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


[GitHub] spark issue #20680: [SPARK-23517][PYTHON] Make `pyspark.util._exception_mess...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the issue:

    https://github.com/apache/spark/pull/20680
  
    **[Test build #87677 has started](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/87677/testReport)** for PR 20680 at commit [`2d3c321`](https://github.com/apache/spark/commit/2d3c321f8be2de4cdca5a654b3f0a6a20a29dc2c).


---

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


[GitHub] spark issue #20680: [SPARK-23517][PYTHON] Make `pyspark.util._exception_mess...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20680
  
    Test PASSed.
    Refer to this link for build results (access rights to CI server needed): 
    https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution/1082/
    Test PASSed.


---

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


[GitHub] spark pull request #20680: [SPARK-23517][PYTHON] Make `pyspark.util._excepti...

Posted by asfgit <gi...@git.apache.org>.
Github user asfgit closed the pull request at:

    https://github.com/apache/spark/pull/20680


---

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


[GitHub] spark issue #20680: [SPARK-23517][PYTHON] Make `pyspark.util._exception_mess...

Posted by HyukjinKwon <gi...@git.apache.org>.
Github user HyukjinKwon commented on the issue:

    https://github.com/apache/spark/pull/20680
  
    cc @ueshin and @BryanCutler, could you take a look when you are available?


---

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


[GitHub] spark issue #20680: [SPARK-23517][PYTHON] Make `pyspark.util._exception_mess...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20680
  
    Merged build finished. Test PASSed.


---

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


[GitHub] spark issue #20680: [SPARK-23517][PYTHON] Make `pyspark.util._exception_mess...

Posted by HyukjinKwon <gi...@git.apache.org>.
Github user HyukjinKwon commented on the issue:

    https://github.com/apache/spark/pull/20680
  
    Will take an action for this PR in branch-2.3 if something goes wrong with 2.3 release somehow.


---

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


[GitHub] spark issue #20680: [SPARK-23517][PYTHON] Make `pyspark.util._exception_mess...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the issue:

    https://github.com/apache/spark/pull/20680
  
    **[Test build #87694 has finished](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/87694/testReport)** for PR 20680 at commit [`f2c884f`](https://github.com/apache/spark/commit/f2c884f49e579dafbe4189d4e566c1164ffb4b85).
     * This patch passes all tests.
     * This patch merges cleanly.
     * This patch adds no public classes.


---

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


[GitHub] spark issue #20680: [SPARK-23517][PYTHON] Make `pyspark.util._exception_mess...

Posted by viirya <gi...@git.apache.org>.
Github user viirya commented on the issue:

    https://github.com/apache/spark/pull/20680
  
    According to the document at https://www.py4j.org/py4j_java_protocol.html, looks like this is the way to access the stack trace and error message.


---

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


[GitHub] spark issue #20680: [SPARK-23517][PYTHON] Make `pyspark.util._exception_mess...

Posted by HyukjinKwon <gi...@git.apache.org>.
Github user HyukjinKwon commented on the issue:

    https://github.com/apache/spark/pull/20680
  
    cc @holdenk too.


---

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


[GitHub] spark issue #20680: [SPARK-23517][PYTHON] Make `pyspark.util._exception_mess...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20680
  
    Merged build finished. Test PASSed.


---

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


[GitHub] spark issue #20680: [SPARK-23517][PYTHON] Make `pyspark.util._exception_mess...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20680
  
    Merged build finished. Test PASSed.


---

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


[GitHub] spark issue #20680: [SPARK-23517][PYTHON] Make `pyspark.util._exception_mess...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the issue:

    https://github.com/apache/spark/pull/20680
  
    **[Test build #87694 has started](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/87694/testReport)** for PR 20680 at commit [`f2c884f`](https://github.com/apache/spark/commit/f2c884f49e579dafbe4189d4e566c1164ffb4b85).


---

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


[GitHub] spark pull request #20680: [SPARK-23517][PYTHON] Make `pyspark.util._excepti...

Posted by ueshin <gi...@git.apache.org>.
Github user ueshin commented on a diff in the pull request:

    https://github.com/apache/spark/pull/20680#discussion_r170658481
  
    --- Diff: python/pyspark/util.py ---
    @@ -33,6 +34,8 @@ def _exception_message(excp):
         >>> msg == _exception_message(excp)
         True
         """
    +    if isinstance(excp, Py4JJavaError):
    --- End diff --
    
    Maybe we need some comments to describe the workaround.


---

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


[GitHub] spark issue #20680: [SPARK-23517][PYTHON] Make `pyspark.util._exception_mess...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20680
  
    Test PASSed.
    Refer to this link for build results (access rights to CI server needed): 
    https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/87677/
    Test PASSed.


---

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


[GitHub] spark issue #20680: [SPARK-23517][PYTHON] Make `pyspark.util._exception_mess...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the issue:

    https://github.com/apache/spark/pull/20680
  
    **[Test build #87677 has finished](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/87677/testReport)** for PR 20680 at commit [`2d3c321`](https://github.com/apache/spark/commit/2d3c321f8be2de4cdca5a654b3f0a6a20a29dc2c).
     * This patch passes all tests.
     * This patch merges cleanly.
     * This patch adds no public classes.


---

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


[GitHub] spark issue #20680: [SPARK-23517][PYTHON] Make `pyspark.util._exception_mess...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20680
  
    Test PASSed.
    Refer to this link for build results (access rights to CI server needed): 
    https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/87694/
    Test PASSed.


---

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


[GitHub] spark issue #20680: [SPARK-23517][PYTHON] Make `pyspark.util._exception_mess...

Posted by viirya <gi...@git.apache.org>.
Github user viirya commented on the issue:

    https://github.com/apache/spark/pull/20680
  
    LGTM


---

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