PySpark / Jupyter NB:Magic命令运行失败

时间:2019-11-17 14:17:32

标签: pyspark jupyter-notebook jupyter-lab

我在JupyterLab中尝试从另一个内部运行一个PySpark笔记本,但我不断收到错误消息

ModuleNotFoundError: No module named 'pyspark'

这里的目标是拥有一个文件来设置配置,例如架构定义和功能,可以从使用这些定义执行不同任务的其他笔记本中调用这些文件。在下面的示例中,配置保留模式定义等,而dataload是执行任务的记事本之一的简化​​版本。

在这种情况下,数据加载记事本必须运行配置记事本,以设置将用于加载数据的架构。

Configuration.ipynb

# Initialization
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName('X').getOrCreate()

    # environment setup
    from pyspark.sql import functions
    from pyspark.sql.types import StructType, StructField
    from pyspark.sql.types import DoubleType, IntegerType, StringType, DateType

    ex_schema = StructType([
        StructField("graph_sid",StringType()),
.....
        StructField("pack_qty", DoubleType())
    ])

DataLoad.ipynb

# Initialization
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName('X').getOrCreate()

%run Configuration.ipynb

我收到以下错误:-

---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
~/work/Configuration_FL.ipynb in <module>
      1 # Initialization
----> 2 from pyspark.sql import SparkSession
      3 spark = SparkSession.builder.appName('X').getOrCreate()

ModuleNotFoundError: No module named 'pyspark'

如果我在一个笔记本中运行所有代码,则效果很好。

我在配置文件中尝试了不同的设置,例如删除了#Initialization部分,这似乎会产生不同的错误。

napoleon_borntoparty 的建议下,我尝试了在同一个内核中同时打开它们。这使我可以从配置记事本中的数据加载中访问定义,但反过来则不能。

1 个答案:

答案 0 :(得分:0)

检查两个笔记本是否使用相同的kernel。在相应的笔记本中,单击Kernel -> Change kernel,然后为每个笔记本选择相同的kernel。将内核视为包含模块和软件包的虚拟环境。 如果这不起作用,请在您提到的initialisation上提供更多数据。