【问题标题】:jupyter pyspark outputs: No module name sknn.mlpjupyter pyspark 输出:没有模块名称 sknn.mlp
【发布时间】:2016-11-23 13:48:39
【问题描述】:

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

在 Jupyter 和终端中的 sys.executable 路径相同。

print(sys.executable)
/usr/bin/anaconda/bin/python

任何帮助将不胜感激。

【问题讨论】:

    标签: pyspark jupyter jupyter-notebook azure-hdinsight


    【解决方案1】:

    问题在于,当您将其安装在头节点(其中一个虚拟机)上时,您并未将其安装在所有其他虚拟机(工作节点)上。当创建 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
    

    第二种方法是简单地从头节点 ssh 进入工作节点。首先,通过 ssh 进入头节点,然后通过访问 Ambari 找出工作节点 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

    忘了说,要修改环境变量,你需要在创建 pyspark 会话时设置变量。在 Jupyter 笔记本中执行此操作:

    %%configure -f
    {
        "conf": {
            "spark.executorEnv.THEANORC": "{YOURPATH}",
            "spark.yarn.appMasterEnv.THEANORC": "{YOURPATH}"
        }
    }
    

    谢谢!

    【讨论】:

    • 这对您有帮助吗?如果有,请接受答案:)
    【解决方案2】:

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

    1. 创建一个 bash 脚本

      cd /usr/bin/anaconda/bin/

      导出 PATH=/usr/bin/anaconda/bin:$PATH

      conda 更新 matplotlib

      conda 安装 Theano

      pip 安装 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,您应该可以导入模块了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-04
      • 2020-03-15
      • 2020-07-05
      • 2020-09-22
      • 2021-01-18
      • 1970-01-01
      相关资源
      最近更新 更多