在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__.pytest1.pytest2.py

您现在可以将它们用作

from myfiles.Test1 import test_function
from myfiles.Test2 import new_function