我正在 Spark 集群(使用 yarn )上运行 jupyter-notebook。我正在使用“findspark”包来设置笔记本,它工作得很好(我通过 SSH 隧道连接到集群主机)。 当我写一个“独立的”笔记本时,它工作得很好,例如以下代码运行没有问题:
import findspark
findspark.init()
import pyspark
sc = pyspark.SparkContext(appName='myApp')
a = sc.range(1000,numSlices=10)
a.take(10)
sc.stop()
Spark 作业完美地分布在 worker 上。但是,当我想使用我编写的 python 包时,worker 上的文件丢失了。
当我不使用 Jupyter-notebook 而使用 spark-submit --master yarn --py-files myPackageSrcFiles.zip 时,我的 Spark 工作正常,例如以下代码正确运行:
主.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()
然后
spark-submit --master yarn --py-files myPackageSrcFiles.zip main.py
问题是:如何从 jupyter notebook 运行 main.py?我尝试使用 pyfiles 关键字在 SparkContext 中指定 .zip 包,但出现错误...
最佳答案
I tried specifying the .zip package in the SparkContext with the pyfiles keyword but I got an error
驼峰式:
sc = pyspark.SparkContext(appName='myApp', pyFiles=["myPackageSrcFiles.zip"])
或者你可以addPyFile
sc.addPyFile("myPackageSrcFiles.zip")
关于python - 为 Spark 集群上的 jupyter notebook 指定 python 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47719089/