如何使用PySpark加载IPython shell

pg2*_*455 25 python ipython apache-spark pyspark

我想加载IPython shell(不是IPython笔记本),我可以通过命令行使用PySpark.那可能吗?我安装了Spark-1.4.1.

zer*_*323 39

如果使用Spark <1.2,则可以bin/pyspark使用环境变量执行IPYTHON=1.

IPYTHON=1 /path/to/bin/pyspark
Run Code Online (Sandbox Code Playgroud)

要么

export IPYTHON=1
/path/to/bin/pyspark
Run Code Online (Sandbox Code Playgroud)

虽然上面仍然可以使用Spark 1.2及以上推荐的方法为这些版本设置Python环境 PYSPARK_DRIVER_PYTHON

PYSPARK_DRIVER_PYTHON=ipython /path/to/bin/pyspark
Run Code Online (Sandbox Code Playgroud)

要么

export PYSPARK_DRIVER_PYTHON=ipython
/path/to/bin/pyspark
Run Code Online (Sandbox Code Playgroud)

您可以替换ipython为您选择的解释器的路径.

  • 我刚刚读到`IPYTHON`变量已折旧,您应该只使用`PYSPARK_DRIVER_PYTHON = ipython`.因此,您只需将`ipython`替换为所需版本的路径即可. (4认同)
  • 那是一个不同的故事.`pyspark` shell(与`spark-shell`和`sparkR`相同)在启动时创建`SparkContext`和`SQLContext`实例.您可以分别使用`sc`和`sqlContext`访问它们.由于Spark只允许每个JVM使用一个上下文,因此必须先停止现有上下文,然后才能创建具有特定选项的新上下文.要做到这一点,你可以简单地调用`sc.stop()`.要选择特定版本的Python解释器,您可以使用`PYSPARK_DRIVER_PYTHON`. (2认同)

NYC*_*yes 8

我使用ptpython(1),它不仅提供ipython功能,还提供你选择的vi(1)emacs(1)键绑定; 它还提供动态代码弹出感/智能,这在CLI上进行Ad-Hoc SPARK工作时非常有用.

这里是我的 -启用ptpython会议样子,注意到的VI(INSERT)模式在screehshot的底部,以及在IPython的风格提示表明这些ptpython能力已经选择(更多关于如何选择他们在片刻):

在此输入图像描述

要完成所有这些,请执行以下简单步骤:

user@linux$ pip3 install ptpython # Everything here assumes Python3

user@linux$ vi ${SPARK_HOME}/conf/spark-env.sh
    # Comment-out/disable the following two lines. This is necessary because
    # they take precedence over any UNIX environment settings for them:
       # PYSPARK_PYTHON=/path/to/python
       # PYSPARK_DRIVER_PYTHON=/path/to/python

user@linux$ vi ${HOME}/.profile # Or whatever your login RC-file is.
    # Add these two lines:
       export PYSPARK_PYTHON=python3           # Fully-Qualify this if necessary. (python3)
       export PYSPARK_DRIVER_PYTHON=ptpython3  # Fully-Qualify this if necessary. (ptpython3)

user@linux$ . ${HOME}/.profile  # Source the RC file.

user@linux$ pyspark
    # You are now running pyspark(1) within ptpython; a code pop-up/interactive
    # shell; with your choice of vi(1) or emacs(1) key-bindings; and 
    # your choice of ipython functionality or not.
Run Code Online (Sandbox Code Playgroud)

要选择你的pypython偏好(并且有很多),只需在ptpython会话中按F2,然后选择你想要的任何选项.

结束注意:如果您要提交Python Spark应用程序(而不是通过CLI与pyspark(1)交互,如上所示),只需在Python中编程方式设置PYSPARK_PYTHONPYSPARK_DRIVER_PYTHON,如下所示:

os.environ['PYSPARK_PYTHON'] = 'python3'
os.environ['PYSPARK_DRIVER_PYTHON'] = 'python3' # Not 'ptpython3' in this case.
Run Code Online (Sandbox Code Playgroud)

我希望这个答案和设置有用.


mzh*_*ang 6

使用spark 3.0.1和python 3.7.7进行测试(安装了ipython/jupyter)

要使用 IPython 启动 pyspark:

$ PYSPARK_DRIVER_PYTHON=ipython pyspark

要使用 jupyter Notebook 启动 pyspark:

$ PYSPARK_DRIVER_PYTHON=jupyter PYSPARK_DRIVER_PYTHON_OPTS=notebook pyspark


小智 5

根据官方Github,IPYTHON=1在Spark 2.0+中不可用,请使用PYSPARK_PYTHON和PYSPARK_DRIVER_PYTHON代替。

https://github.com/apache/spark/blob/master/bin/pyspark


小智 5

如果 spark 版本 >= 2.0 并且以下配置可以添加到 .bashrc

export PYSPARK_PYTHON=/data/venv/your_env/bin/python
export PYSPARK_DRIVER_PYTHON=/data/venv/your_env/bin/ipython
Run Code Online (Sandbox Code Playgroud)