在Spark集群上为Jupyter Notebook指定python文件

ma3*_*oun 5 python apache-spark pyspark jupyter-notebook

我正在Spark集群(带有毛线)上运行一本jupyter笔记本。我正在使用“ findspark”包来设置笔记本,它工作得很好(我通过SSH隧道连接到集群主机)。当我编写“自包含”笔记本时,它可以正常运行,例如,以下代码可以正常运行:

import findspark
findspark.init()

import pyspark

sc = pyspark.SparkContext(appName='myApp')
a = sc.range(1000,numSlices=10)
a.take(10)
sc.stop()
Run Code Online (Sandbox Code Playgroud)

Spark工作完全分配给了工人。但是,当我想使用自己编写的python包时,worker上的文件丢失了

当我不使用Jupyter-notebook时,当我使用spark-submit --master yarn --py-files myPackageSrcFiles.zip时,我的Spark作业可以正常工作,例如以下代码可以正确运行:

main.py

import pyspark
from myPackage import myFunc

sc = pyspark.SparkContext(appName='myApp')
a = sc.range(1000,numSlices=10)
b = a.map(lambda x: myFunc(x)) 
b.take(10)
sc.stop()
Run Code Online (Sandbox Code Playgroud)

然后

spark-submit --master yarn --py-files myPackageSrcFiles.zip main.py
Run Code Online (Sandbox Code Playgroud)

问题是:如何从jupyter笔记本运行main.py?我尝试使用pyfiles关键字在SparkContext中指定.zip包,但出现错误...

hi-*_*zir 6

我尝试使用pyfiles关键字在 SparkContext 中指定 .zip 包,但出现错误

这是驼峰案例:

sc = pyspark.SparkContext(appName='myApp', pyFiles=["myPackageSrcFiles.zip"])
Run Code Online (Sandbox Code Playgroud)

或者你可以addPyFile

sc.addPyFile("myPackageSrcFiles.zip")
Run Code Online (Sandbox Code Playgroud)