[ https://issues.apache.org/jira/browse/SPARK-1134?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Matei Zaharia resolved SPARK-1134. ---------------------------------- Resolution: Fixed > ipython won't run standalone python script > ------------------------------------------ > > Key: SPARK-1134 > URL: https://issues.apache.org/jira/browse/SPARK-1134 > Project: Spark > Issue Type: Bug > Components: PySpark > Affects Versions: 0.9.0, 0.9.1 > Reporter: Diana Carroll > Assignee: Diana Carroll > Labels: pyspark > Fix For: 1.0.0, 0.9.2 > > > Using Spark 0.9.0, python 2.6.6, and ipython 1.1.0. > The problem: If I want to run a python script as a standalone app, the docs > say I should execute the command "pyspark myscript.py". This works as long > as IPYTHON=0. But if IPYTHON=1 this doesn't work. > This problem arose for me because I tried to save myself typing by setting > IPYTHON=1 in my shell profile script. Which then meant I was unable to > execute pyspark standalone scripts. > My analysis: > in the pyspark script, command line arguments are simply ignored if ipython > is used: > {code}if [[ "$IPYTHON" = "1" ]] ; then > exec ipython $IPYTHON_OPTS > else > exec "$PYSPARK_PYTHON" "$@" > fi{code} > I thought I could get around this by changing the script to pass $@. > However, this doesn't work: doing so results in an error saying multiple > spark contexts can't be run at once. > This is because of a feature?/bug? of ipython related to the PYTHONSTARTUP > environment variable. the pyspark script sets this variable to point to the > python/shell.py script, which initializes the Spark Context. In regular > python, the PYTHONSTARTUP script runs ONLY if python is invoked in > interactive mode; if run with a script, it ignores the variable. iPython > runs that script every time, regardless. Which means it will always execute > Spark's shell.py script to initialize the spark context even when it was > invoked with a script. > Proposed solution: > short term: add this information to the Spark docs regarding iPython. > Something like "Note, iPython can only be used interactively. Use regular > Python to execute pyspark script files." > long term: change the pyspark script to tell if arguments are passed in; if > so, just call python instead of pyspark, or don't set the PYTHONSTARTUP > variable? Or maybe fix shell.py to detect if it's being invoked in > non-interactively and not initialize sc. -- This message was sent by Atlassian JIRA (v6.2#6252)