jupyter pyspark输出:没有模块名称sknn.mlp

时间:2016-07-20 10:55:45

标签: pyspark jupyter jupyter-notebook hdinsight

我有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终端,我能够成功导入模块。截图如下。

enter image description here

现在,我打开Jupyter Pyspark Notebook:

enter image description here

添加,我可以从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

任何帮助都会非常感激。

2 个答案:

答案 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)

解决这个问题的简单方法是:

  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

  2. 将以上创建的bash脚本复制到Azure存储帐户中的任何容器。

  3. 在创建HDInsight Spark群集时,请使用脚本操作并在URL中提及上述路径。例如:https:// sa-account-name .blob.core.windows.net / containername / path-of-installation-file.sh
  4. 将它安装在HeadNodes和WorkerNodes中。
  5. 现在,打开Jupyter,您应该能够导入模块。