我有1个WorkerNode SPARK HDInsight群集。我需要在Pyspark Jupyter中使用scikit-neuralnetwork和vaderSentiment模块。
使用以下命令安装库:
cd /usr/bin/anaconda/bin/
export PATH=/usr/bin/anaconda/bin:$PATH
conda update matplotlib
conda install Theano
pip install scikit-neuralnetwork
pip install vaderSentiment
接下来我打开pyspark终端,我能够成功导入模块。截图如下。
现在,我打开Jupyter Pyspark Notebook:
添加,我可以从Jupyter导入预装模块,例如"导入pandas"
安装进入:
admin123@hn0-linuxh:/usr/bin/anaconda/bin$ sudo find / -name "vaderSentiment"
/usr/bin/anaconda/lib/python2.7/site-packages/vaderSentiment
/usr/local/lib/python2.7/dist-packages/vaderSentiment
对于预安装的模块:
admin123@hn0-linuxh:/usr/bin/anaconda/bin$ sudo find / -name "pandas"
/usr/bin/anaconda/pkgs/pandas-0.17.1-np19py27_0/lib/python2.7/site-packages/pandas
/usr/bin/anaconda/pkgs/pandas-0.16.2-np19py27_0/lib/python2.7/site-packages/pandas
/usr/bin/anaconda/pkgs/bokeh-0.9.0-np19py27_0/Examples/bokeh/compat/pandas
/usr/bin/anaconda/Examples/bokeh/compat/pandas
/usr/bin/anaconda/lib/python2.7/site-packages/pandas
sysupcutable路径在Jupyter和终端中都是相同的。
print(sys.executable)
/usr/bin/anaconda/bin/python
任何帮助都会非常感激。
答案 0 :(得分:1)
问题在于,当您将其安装在headnode(其中一个VM)上时,您不会将其安装在所有其他VM(工作节点)上。当创建Jupyter的Pyspark应用程序时,它将以YARN集群模式运行,因此应用程序主机在随机工作节点中启动。
在所有工作节点中安装库的一种方法是创建一个针对工作节点运行的脚本操作并安装必要的库: https://azure.microsoft.com/en-us/documentation/articles/hdinsight-hadoop-customize-cluster-linux/
请注意群集中有两个python安装,您必须明确参考Anaconda安装。安装scikit-neuralnetwork看起来像这样:
sudo /usr/bin/anaconda/bin/pip install scikit-neuralnetwork
第二种方法是简单地从headnode ssh到workernodes。首先,ssh进入headnode,然后通过转到Ambari:https://YOURCLUSTER.azurehdinsight.net/#/main/hosts找出workernode IP。然后,ssh 10.0.0.#
并自行为所有工作节点执行安装命令。
我为scikit-neuralnetwork做了这个,虽然它确实正确导入,但它会抛出说无法在〜/ .theano中创建文件。由于YARN正在以nobody
用户身份运行Pyspark会话,因此Theano无法创建其配置文件。进行一些挖掘,我发现有一种方法可以改变Theano写入/查找其配置文件的位置。在进行安装时请另外注意:http://deeplearning.net/software/theano/library/config.html#envvar-THEANORC
忘记提及,要修改env var,需要在创建pyspark会话时设置变量。在Jupyter笔记本中执行此操作:
%%configure -f
{
"conf": {
"spark.executorEnv.THEANORC": "{YOURPATH}",
"spark.yarn.appMasterEnv.THEANORC": "{YOURPATH}"
}
}
谢谢!
答案 1 :(得分:1)
解决这个问题的简单方法是:
创建一个bash脚本
cd / usr / bin / anaconda / bin /
export PATH = / usr / bin / anaconda / bin:$ PATH
conda update matplotlib
conda install Theano
pip install scikit-neuralnetwork
pip install vaderSentiment
将以上创建的bash脚本复制到Azure存储帐户中的任何容器。