当我启动pyspark时,火花加载正确,但我最终进入标准的python shell环境。
Using Python version 2.7.13 (default, Dec 20 2016 23:05:08)
SparkSession available as 'spark'.
>>>
我想启动ipython解释器。
IPython 5.1.0 -- An enhanced Interactive Python.
In [1]:
我该怎么做?我尝试用这种方式修改我的.bashprofile并使用别名:
# Spark variables
export SPARK_HOME="/Users/micahshanks/spark-2.1.0-bin-hadoop2.7"
export PYTHONPATH="/Users/micahshanks/spark-2.1.0-bin-hadoop2.7/python/:"
# Spark 2
export PYSPARK_DRIVER_PYTHON=ipython
export PATH=$SPARK_HOME/bin:$PATH
# export PYTHONPATH=$SPARK_HOME/python:$PYTHONPATH
alias sudo='sudo '
alias pyspark="/Users/micahshanks/spark-2.1.0-bin-hadoop2.7/bin/pyspark \
--conf spark.sql.warehouse.dir='file:///tmp/spark-warehouse' \
--packages com.databricks:spark-csv_2.11:1.5.0 \
--packages com.amazonaws:aws-java-sdk-pom:1.10.34 \
--packages org.apache.hadoop:hadoop-aws:2.7.3 \
--packages org.mongodb.spark:mongo-spark-connector_2.10:2.0.0"
我还尝试导航到位于pyspark所在的家中并直接从那里发射,但我再次到达python口译员。
我发现这篇帖子:How to load IPython shell with PySpark并且接受的答案看起来很有希望,但是在启动spark之前激活python 2环境(source activate py2)并以这种方式更改我的bash配置文件尝试使用python 3启动spark我不打算这样做(抛出错误)。
我正在使用spark 2.1
答案 0 :(得分:1)
Spark 2.1.1
由于某些原因,键入sudo ./bin/pyspark
会更改metastore_db/db.lck
的文件权限,导致运行ipython和pyspark无法正常工作。从解压缩的根目录中试试:
sudo chown -v $(id -un) metastore_db/db.lck
export PYSPARK_DRIVER_PYTHON=ipython
./bin/pyspark
另一种解决方案是从spark.apache.org重新下载和解压缩。导航到解压缩目录的根目录,然后:
export PYSPARK_DRIVER_PYTHON=ipython
./bin/pyspark
它应该有效。
答案 1 :(得分:0)
自从提出这个问题后,我发现一个有用的解决方案是编写以特定方式加载Spark的bash脚本。这样做将为您提供一种在不同环境中启动Spark的简便方法(例如ipython和jupyter笔记本)。
要执行此操作,请打开一个空白脚本(使用您喜欢的任何文本编辑器),例如一个名为ipython_spark.sh
对于这个例子,我将提供用于使用ipython解释器打开spark的脚本:
#!/bin/bash
export PYSPARK_DRIVER_PYTHON=ipython
${SPARK_HOME}/bin/pyspark \
--master local[4] \
--executor-memory 1G \
--driver-memory 1G \
--conf spark.sql.warehouse.dir="file:///tmp/spark-warehouse" \
--packages com.databricks:spark-csv_2.11:1.5.0 \
--packages com.amazonaws:aws-java-sdk-pom:1.10.34 \
--packages org.apache.hadoop:hadoop-aws:2.7.3
请注意,我在bash_profile中定义了SPARK_HOME,但您可以将整个路径插入到计算机上pyspark所在的位置
我喜欢把这样的所有脚本放在一个地方,所以我将这个文件放在一个名为“scripts”的文件夹中
现在,对于此示例,您需要转到bash_profile并输入以下行:
export PATH=$PATH:/Users/<username>/scripts
alias ispark="bash /Users/<username>/scripts/ipython_spark.sh"
这些路径将特定于您放置ipython_spark.sh的位置 然后您可能需要更新权限:
$ chmod 711 ipython_spark.sh
并找到你的bash_profile:
$ source ~/.bash_profile
我在Mac上,但这也应该适用于linux,尽管你很可能会更新.bashrc而不是bash_profile。
我喜欢这种方法的方法是你可以编写多个脚本,使用不同的配置并相应地打开spark。根据您是否正在设置群集,需要加载不同的包,或更改spark可以使用的核心数等,您可以更新此脚本,也可以创建新脚本。请注意,PYSPARK_DRIVER_PYTHON =是Spark&gt;的正确语法。 1.2 我正在使用Spark 2.2