Link Spark 与 iPython 笔记本

Link Spark with iPython Notebook

我已经在网上学习了一些教程,但它们不适用于 Spark 1.5.1 OS X El Capitan (10.11)

基本上我有运行这个命令下载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 上下文)。

有人设法用 Spark 1.5.1 做到这一点吗?

编辑:您可以按照本指南进行操作

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

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

  1. 为 OSX 安装 anaconda
  2. 安装jupyter typing the next line in your terminal Click me for more info.

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

    ilovejobs@mymac:~$ conda update jupyter
    
  4. 下载Apache Spark and compile it, or download and uncompress 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 目录并验证 spark 是否存在。

    ilovejobs@mymac:~/Downloads$ cd ~/Apps
    ilovejobs@mymac:~/Apps$ ls -l
    drwxr-xr-x ?? ilovejobs ilovejobs 4096 ?? ?? ??:?? spark-1.5.1
    
  8. 这是第一个棘手的部分。将 spark 二进制文件添加到您的 $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
    

请注意,您可以将这些变量添加到位于您家中的 .bashrc现在开心点,你应该可以 运行 带有 pyspark 内核的 jupyter(它将显示为 python 2 但它会使用 spark)

带 IPython/Jupyter 笔记本的 Spark 很棒,我很高兴 Alberto 能够帮助您使用它。

作为参考,还值得考虑 2 个预先打包好的替代方案,它们可以轻松集成到 YARN 集群中(如果需要)。

Spark 笔记本:https://github.com/andypetrella/spark-notebook

阿帕奇飞艇:https://zeppelin.incubator.apache.org/

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

Zeppelin (v0.5) 看起来很有前途,但目前提供的功能不如 Spark Notebook 或 IPython with Spark。

仅供参考,您可以 运行 Scala、PySpark、SparkR 和 SQL 通过 https://github.com/ibm-et/spark-kernel now. The new interpreters were added (and marked experimental) from pull request https://github.com/ibm-et/spark-kernel/pull/146 在 Jupyter 上使用 Spark 运行ning。

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

首先,请确保您的机器中有 spark 环境。

然后,通过 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 内核的最简单方法