Jupyter Notebook仅在Spark上

时间:2016-09-16 03:00:50

标签: apache-spark jupyter

我试图在jupyter-notebook (v4.2.2)上远程使用spark cluster (v2.0),但是当我运行以下命令时,它不会在spark上运行,而只会在本地运行:

PYSPARK_DRIVER_PYTHON=jupyter PYSPARK_DRIVER_PYTHON_OPTS="notebook --no-browser --port=7777" pyspark --master spark://**spark_master_hostname**:7077

当我使用相同的pyspark单独运行--master argument时,该过程会在"Running Applications"中显示为火花群集。

pyspark --master spark://**spark_master_hostname**:7077

这几乎就像pyspark没有在前者中运行一样。第一个命令是否有问题阻止jupyter在spark集群上运行,或者是在spark集群上运行笔记本的更好方法?

2 个答案:

答案 0 :(得分:1)

看起来你想加载IPython shell,而不是IPython笔记本并通过命令行使用PySpark?

IMO Jupiter UI是使用笔记本电脑的更便捷方式。

您可以运行jupyter服务器:

jupyter notebook

然后(使用jupyter UI)启动新的Python2内核。在打开的笔记本中创建SparkContext,其配置指向您的spark集群:

from pyspark import SparkContext, SparkConf
conf = SparkConf()
conf.setMaster('spark://**spark_master_hostname**:7077')
conf.setAppName('some-app-name')
sc = SparkContext(conf=conf)

现在你已经在spark集群上启动了pyspark应用程序,你可以通过创建的SparkContext与它进行交互。即:

def mod(x):
    import numpy as np
    return (x, np.mod(x, 2))
rdd = sc.parallelize(range(1000)).map(mod).take(10)
print rdd

上面的代码将远程计算。

答案 1 :(得分:0)

此问题的解决方案可能需要隧道。我为我的公司设置了以下说明。

您可以进行一些环境更改,以使用pyspark默认的ipython或jupyter笔记本。

将以下内容放入~/.bashrc

export PYSPARK_PYTHON=python3 ## for python3
export PYSPARK_DRIVER_PYTHON=ipython
export PYSPARK_DRIVER_PYTHON_OPTS="notebook --no-browser --port=7000"

请参阅:pyspark on GitHub

接下来,运行source ~/.bashrc

然后,当您启动pyspark --master yarn(带有YARN的Spark)时,它将打开一个服务器供您连接。

在具有ssh功能的本地终端上,运行

ssh -N -f -L localhost:8000:localhost:7000 <username>@<host>

如果您使用的是Windows,我建议MobaXtermCygwin

打开网络浏览器,输入地址localhost:8000以使用Spark

隧道进入您的笔记本

一些注意事项,我从来没有尝试过使用Python 3,所以如果你使用Python 3作为默认设置,可能需要额外的设置。