首页 文章

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

提问于
浏览
0

我有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导入预安装的模块,如“import 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 回答

  • 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,然后通过以下方式找到workernode IP:https://YOURCLUSTER.azurehdinsight.net/#/main/hosts . 然后, 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

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

    • 创建一个bash脚本

    cd / usr / bin / anaconda / bin /

    export PATH = / usr / bin / anaconda / bin:$ PATH

    conda更新matplotlib

    conda安装Theano

    pip安装scikit-neuralnetwork

    pip install vaderSentiment

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

    • 创建HDInsight Spark群集时,请使用脚本操作并在URL中提及上述路径 . 例如:https:// sa-account-name .blob.core.windows.net / containername/path-of-installation-file.sh

    • 在HeadNodes和WorkerNodes中安装它 .

    • 现在,打开Jupyter,您应该能够导入模块 .

相关问题