在pyspark中导入多个py文件
Importing multiple py files in pyspark
我在 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()
所有 3 个文件都在同一个文件夹中。
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 submit 一起提供,但也没有用。
尝试压缩 test1 和 test2 并将其与 spark 上下文一起添加。也没用。
试图了解为什么它不起作用以及如何解决这个问题。
选项 1
尝试使用 spark-submit
给出这些语法,确保您使用的是逗号
--py-files test1.py,test2.py
选项 2:
此外,您可以 zip
它们并像这样包含
首先将它们放在一个目录中,例如 myfiles/
(另外在该目录的根级别创建空 __init__.py
文件,如 myfiles/__init__.py )
在此目录之外,将其压缩(例如 myfiles.zip
)
现在包含此 zip sc.addPyFile
功能
sc.addPyFile("myfiles.zip")
考虑到您在 myfiles.zip
中有 __init__.py
、test1.py
和 test2.py
您现在可以将它们用作
from myfiles.Test1 import test_function
from myfiles.Test2 import new_function
我在 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()
所有 3 个文件都在同一个文件夹中。
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 submit 一起提供,但也没有用。
尝试压缩 test1 和 test2 并将其与 spark 上下文一起添加。也没用。
试图了解为什么它不起作用以及如何解决这个问题。
选项 1
尝试使用 spark-submit
给出这些语法,确保您使用的是逗号
--py-files test1.py,test2.py
选项 2:
此外,您可以 zip
它们并像这样包含
首先将它们放在一个目录中,例如 myfiles/
(另外在该目录的根级别创建空 __init__.py
文件,如 myfiles/__init__.py )
在此目录之外,将其压缩(例如 myfiles.zip
)
现在包含此 zip sc.addPyFile
功能
sc.addPyFile("myfiles.zip")
考虑到您在 myfiles.zip
__init__.py
、test1.py
和 test2.py
您现在可以将它们用作
from myfiles.Test1 import test_function
from myfiles.Test2 import new_function