使用iPython Notebook链接Spark

时间:2015-10-11 10:39:32

标签: apache-spark ipython ipython-notebook pyspark osx-elcapitan

我已经在线学习了一些教程,但它们在OS X El Capitan(10.11)上不能与Spark 1.5.1一起使用

基本上我已经运行了这个命令下载apache-spark

brew update
brew install scala
brew install apache-spark

更新了.bash_profile

# For a ipython notebook and pyspark integration
if which pyspark > /dev/null; then
  export SPARK_HOME="/usr/local/Cellar/apache-spark/1.5.1/libexec/"
  export PYSPARK_SUBMIT_ARGS="--master local[2]"
fi

运行

ipython profile create pyspark

创建了以这种方式配置的启动文件~/.ipython/profile_pyspark/startup/00-pyspark-setup.py

# Configure the necessary Spark environment
import os
import sys

# Spark home
spark_home = os.environ.get("SPARK_HOME")

# If Spark V1.4.x is detected, then add ' pyspark-shell' to
# the end of the 'PYSPARK_SUBMIT_ARGS' environment variable
spark_release_file = spark_home + "/RELEASE"
if os.path.exists(spark_release_file) and "Spark 1.4" in open(spark_release_file).read():
    pyspark_submit_args = os.environ.get("PYSPARK_SUBMIT_ARGS", "")
    if not "pyspark-shell" in pyspark_submit_args: pyspark_submit_args += " pyspark-shell"
    os.environ["PYSPARK_SUBMIT_ARGS"] = pyspark_submit_args

# Add the spark python sub-directory to the path
sys.path.insert(0, spark_home + "/python")

# Add the py4j to the path.
# You may need to change the version number to match your install
sys.path.insert(0, os.path.join(spark_home, "python/lib/py4j-0.8.2.1-src.zip"))

# Initialize PySpark to predefine the SparkContext variable 'sc'
execfile(os.path.join(spark_home, "python/pyspark/shell.py"))

然后我运行ipython notebook --profile=pyspark并且笔记本工作正常,但sc(火花上下文)无法识别。

任何人都设法使用Spark 1.5.1执行此操作?

编辑:您可以按照本指南开展工作

https://gist.github.com/tommycarpi/f5a67c66a8f2170e263c

4 个答案:

答案 0 :(得分:24)

我安装了Jupyter,确实比你想象的要简单:

  1. 为OSX安装anaconda
  2. 安装jupyter,在终端Click me for more info中输入下一行。

    ilovejobs@mymac:~$ conda install jupyter
    
  3. 以防万一更新jupyter。

    ilovejobs@mymac:~$ conda update jupyter
    
  4. 下载Apache Spark并进行编译,或下载并解压缩Apache Spark 1.5.1 + Hadoop 2.6

    ilovejobs@mymac:~$ cd Downloads 
    ilovejobs@mymac:~/Downloads$ wget http://www.apache.org/dyn/closer.lua/spark/spark-1.5.1/spark-1.5.1-bin-hadoop2.6.tgz
    
  5. 在您家中创建一个Apps文件夹(即):

    ilovejobs@mymac:~/Downloads$ mkdir ~/Apps
    
  6. 将未压缩的文件夹spark-1.5.1移动到~/Apps目录。

    ilovejobs@mymac:~/Downloads$ mv spark-1.5.1/ ~/Apps
    
  7. 转到~/Apps目录并验证是否有火花。

    ilovejobs@mymac:~/Downloads$ cd ~/Apps
    ilovejobs@mymac:~/Apps$ ls -l
    drwxr-xr-x ?? ilovejobs ilovejobs 4096 ?? ?? ??:?? spark-1.5.1
    
  8. 这是第一个棘手的部分。将火花二进制文件添加到$PATH

    ilovejobs@mymac:~/Apps$ cd
    ilovejobs@mymac:~$ echo "export $HOME/apps/spark/bin:$PATH" >> .profile
    
  9. 这是第二个棘手的部分。另外添加此环境变量:

    ilovejobs@mymac:~$ echo "export PYSPARK_DRIVER_PYTHON=ipython" >> .profile
    ilovejobs@mymac:~$ echo "export PYSPARK_DRIVER_PYTHON_OPTS='notebook' pyspark" >> .profile
    
  10. 获取个人资料,以便为终端

    提供这些变量
    ilovejobs@mymac:~$ source .profile
    
  11. 创建一个~/notebooks目录。

    ilovejobs@mymac:~$ mkdir notebooks
    
  12. 转到~/notebooks并运行pyspark:

    ilovejobs@mymac:~$ cd notebooks
    ilovejobs@mymac:~/notebooks$ pyspark
    
  13. 请注意,您可以将这些变量添加到您家中的.bashrc现在开心,你应该可以运行带有pyspark内核的jupyter(它会将它显示为python 2,但它会使用spark)

答案 1 :(得分:4)

首先,确保您的机器中有火花环境。

然后,通过pip:

安装python模块findspark
$ sudo pip install findspark

然后在python shell中:

import findspark
findspark.init()

import pyspark
sc = pyspark.SparkContext(appName="myAppName")

现在你可以在python shell(或ipython)中用pyspark做你想做的事。

实际上,我认为在jupyter中使用spark内核是最简单的方法

答案 2 :(得分:2)

仅供参考,您现在可以通过https://github.com/ibm-et/spark-kernel在Jupyter上运行Spark,运行Scala,PySpark,SparkR和SQL。新的口译员从拉取请求https://github.com/ibm-et/spark-kernel/pull/146添加(并标记为实验性)。

有关详细信息,请参阅language support Wiki页面。

答案 3 :(得分:1)

使用IPython / Jupyter笔记本电脑的Spark非常棒,我很高兴Alberto能够帮助您实现它。

作为参考,它也值得考虑预先包装的2个好的替代品,并且可以很容易地集成到YARN集群中(如果需要的话)。

Spark Notebook:https://github.com/andypetrella/spark-notebook

Apache Zeppelin:https://zeppelin.incubator.apache.org/

在撰写本文时,Spark Notebook(v0.6.1)更为成熟,您可以在此处针对Spark和Hadoop版本预构建安装:http://spark-notebook.io/

Zeppelin(v0.5)看起来非常有前景,但现在不提供与Spark笔记本或IPython一样多的功能。