2016-09-16 184 views
5

在本地运行,我试图用jupyter-notebook (v4.2.2)远程对spark cluster (v2.0),但是当我运行下面的命令,它不火花运行,但只能在本地运行:Jupyter笔记本只在星火

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在火花集群上运行或更好地在火花集群上运行笔记本电脑有什么问题吗?

回答

1

它看起来要加载IPython shell,而不是IPython notebook,并通过命令行使用PySpark?

国际海事组织木星UI是更方便的方式来使用笔记本电脑。

您可以运行jupyter服务器:

jupyter notebook 

然后(使用jupyter UI)开始新Python2内核。在打开笔记本创建SparkContext与配置指向你的火花集群:

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

现在你已经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 

上面的代码将被远程计算。

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(火花纱),它会打开一个服务器你连接到。

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

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

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

打开一个网页浏览器,并与星火输入地址localhost:8000隧道到您的笔记本

一些预防措施,我从来没有与Python 3尝试这样做,所以如果你正在使用Python 3作为默认,它可能需要额外的设置。