【问题标题】:No module named 'pyspark' when running Jupyter notebook inside EMR在 EMR 中运行 Jupyter notebook 时没有名为“pyspark”的模块
【发布时间】:2020-03-15 10:36:17
【问题描述】:

总的来说,我对 AWS 和 Spark(非常)陌生,我正在尝试在 Amazon EMR 中运行笔记本实例。当我尝试导入 pyspark 以启动会话并从 s3 加载数据时,我收到错误 No module named 'pyspark'。我创建的集群填充了 Spark 选项,我做错了什么?

【问题讨论】:

  • 你是否安装了python包,例如pip install pyspark ?
  • 您可以按照here的步骤进行配置
  • 感谢 cmets,很抱歉我花了这么长时间才回复。此解决方案适用于本地,但我的问题是 AWS 在 EMR 模块中生成和管理的笔记本实例。关于如何在 EMR 笔记本中解决此问题的任何想法?
  • 我确实尝试了“在新集群上”选项。如果我没记错的话,我应该在“编辑软件设置”中复制/粘贴该代码。

标签: python amazon-web-services pyspark jupyter-notebook amazon-emr


【解决方案1】:

对我有用的唯一解决方案是将笔记本内核更改为 PySpark 内核,然后更改引导操作以安装默认情况下不在 pyspark 内核中的包(在 python 版本 3.6 中):

#!/bin/bash
sudo python3.6 -m pip install numpy \
    matplotlib \
    pandas \
    seaborn \
    pyspark

显然默认情况下它会安装到 python 2.7.16,因此它不会输出任何错误消息,但您无法导入模块,因为 spark env 使用 Python 2.7.16。

【讨论】:

  • 您可以在启动集群时传递配置以强制它使用 Python 3。要了解如何操作,请在此处查看我的答案:stackoverflow.com/a/57408712/4245859
  • 这个问题真的很困扰我,一方面,你可以很容易地改成spark内核,但另一方面,当转换成python文件并尝试使用spark-submit运行时,你会遇到问题内核之间的差异。什么是正确的工作方式?
【解决方案2】:

您可以打开 jupyter lab notebook 并从那里选择新的 spark notebook。 这将为您自动启动火花上下文。

或者你可以通过%%spark打开Jupyter notebook并加载spark应用

【讨论】:

  • 前者对我有用(选择 PySpark 笔记本类型);普通 Jupyter 笔记本中的 spark 魔术语法没有。
【解决方案3】:

您可以尝试使用 findspark 库。 可以在您的 jupyter 中 pip install findspark 及以下代码。

import findspark
findspark.init()

%load_ext sparksql_magic
%config SparkSql.limit=200

【讨论】:

  • 能否请您格式化您的答案并检查正字法?
猜你喜欢
  • 1970-01-01
  • 2016-07-10
  • 1970-01-01
  • 2018-12-02
  • 2018-07-21
  • 2019-03-05
  • 2020-03-05
  • 2018-10-21
  • 2018-04-13
相关资源
最近更新 更多