aboutsummaryrefslogtreecommitdiff
path: root/python/pyspark/java_gateway.py
diff options
context:
space:
mode:
authorAndrew Or <andrewor14@gmail.com>2014-08-20 17:07:39 -0700
committerAndrew Or <andrewor14@gmail.com>2014-08-20 17:07:39 -0700
commitba3c730e35bcdb662396955c3cc6f7de628034c8 (patch)
tree83ebd4cade1acd7f7f204edd132b6b503a193a37 /python/pyspark/java_gateway.py
parentc9f743957fa963bc1dbed7a44a346ffce1a45cf2 (diff)
downloadspark-ba3c730e35bcdb662396955c3cc6f7de628034c8.tar.gz
spark-ba3c730e35bcdb662396955c3cc6f7de628034c8.tar.bz2
spark-ba3c730e35bcdb662396955c3cc6f7de628034c8.zip
[SPARK-3140] Clarify confusing PySpark exception message
We read the py4j port from the stdout of the `bin/spark-submit` subprocess. If there is interference in stdout (e.g. a random echo in `spark-submit`), we throw an exception with a warning message. We do not, however, distinguish between this case from the case where no stdout is produced at all. I wasted a non-trivial amount of time being baffled by this exception in search of places where I print random whitespace (in vain, of course). A clearer exception message that distinguishes between these cases will prevent similar headaches that I have gone through. Author: Andrew Or <andrewor14@gmail.com> Closes #2067 from andrewor14/python-exception and squashes the following commits: 742f823 [Andrew Or] Further clarify warning messages e96a7a0 [Andrew Or] Distinguish between unexpected output and no output at all
Diffstat (limited to 'python/pyspark/java_gateway.py')
-rw-r--r--python/pyspark/java_gateway.py13
1 files changed, 10 insertions, 3 deletions
diff --git a/python/pyspark/java_gateway.py b/python/pyspark/java_gateway.py
index c7f7c1fe59..6f4f62f23b 100644
--- a/python/pyspark/java_gateway.py
+++ b/python/pyspark/java_gateway.py
@@ -54,12 +54,19 @@ def launch_gateway():
gateway_port = proc.stdout.readline()
gateway_port = int(gateway_port)
except ValueError:
+ # Grab the remaining lines of stdout
(stdout, _) = proc.communicate()
exit_code = proc.poll()
error_msg = "Launching GatewayServer failed"
- error_msg += " with exit code %d! " % exit_code if exit_code else "! "
- error_msg += "(Warning: unexpected output detected.)\n\n"
- error_msg += gateway_port + stdout
+ error_msg += " with exit code %d!\n" % exit_code if exit_code else "!\n"
+ error_msg += "Warning: Expected GatewayServer to output a port, but found "
+ if gateway_port == "" and stdout == "":
+ error_msg += "no output.\n"
+ else:
+ error_msg += "the following:\n\n"
+ error_msg += "--------------------------------------------------------------\n"
+ error_msg += gateway_port + stdout
+ error_msg += "--------------------------------------------------------------\n"
raise Exception(error_msg)
# Create a thread to echo output from the GatewayServer, which is required