问题描述
我在hdfs中具有以下文件夹结构。
/ home / myid -main.py -test1.py -test2.py
在main.py中,我试图同时导入test1和test2。
from pyspark.context import SparkContext
from pyspark.sql.session import SparkSession
sc=SparkContext('local')
spark= SparkSession(sc)
from test1 import test_function
from test2 import new_function
test_function()
new_function()
Test1.py
def test_function():
print("test1")
Test2.py
def new_function():
print("test2")
当我尝试使用执行main.py时 spark-submit main.py,它说不能导入new_function。
它能够导入test1.py但不能导入test2.py
在导入之前,我还尝试过使用sc.addPyFile。没用。
通过提供--py-files和spark提交进行了尝试,但同样没有效果。
尝试压缩test1和test2并将其与spark上下文一起添加。也不行。
试图了解为什么它不起作用以及如何解决这个问题。
解决方法
选项1
尝试使用spark-submit
给出这些语法,确保您使用的是逗号
--py-files test1.py,test2.py
选项2:
此外,您可以zip
将它们包括进来
首先将它们放置在实例myfiles/
的目录中(另外,在此目录的根目录下创建空的__init__.py
文件,例如myfiles / __ init__.py)
从该目录之外,对其进行压缩(例如myfiles.zip
)
现在包含具有sc.addPyFile
功能的zip
sc.addPyFile("myfiles.zip")
考虑到您在__init__.py
中拥有test1.py
,test2.py
和myfiles.zip
您现在可以将它们用作
from myfiles.Test1 import test_function
from myfiles.Test2 import new_function