Python 将类函数传递给PySpark RDD

Python 将类函数传递给PySpark RDD,python,apache-spark,pyspark,rdd,Python,Apache Spark,Pyspark,Rdd,我在Python文件中有一个名为some_class的类: /some-folder/app/bin/file.py 我正在此处将其导入我的代码: /some-folder2/app/code/file2.py 借 我想在spark映射中使用这个类的函数名为some_函数 sc.parallelize(some_data_iterator).map(lambda x: clss.some_function(x)) 这给了我一个错误: No module named file 而class

我在Python文件中有一个名为some_class的类:

/some-folder/app/bin/file.py
我正在此处将其导入我的代码:

/some-folder2/app/code/file2.py

我想在spark映射中使用这个类的函数名为some_函数

sc.parallelize(some_data_iterator).map(lambda x: clss.some_function(x))
这给了我一个错误:

No module named file
而class.some_函数,当我在pyspark的map函数之外调用它时,即通常情况下,但不是在pyspark的RDD中。我认为这与Pypark有关。我不知道我在这件事上哪里出错了


我尝试广播该类,但仍然不起作用。

所有Python依赖项都必须出现在工作节点的搜索路径上,或者使用SparkContext.addPyFile方法手动分发,因此类似这样的操作应该可以做到:

sc.addPyFile("/some-folder/app/bin/file.py")
它会将文件复制到所有工作人员,并将其放入工作目录中


请注意,即使只是一个示例,也不要将文件用作模块名。隐藏Python中的内置函数不是一个很好的主意。

所有Python依赖项都必须出现在工作节点的搜索路径上,或者使用SparkContext.addPyFile方法手动分发,因此类似这样的方法应该可以做到:

sc.addPyFile("/some-folder/app/bin/file.py")
它会将文件复制到所有工作人员,并将其放入工作目录中


请注意,即使只是一个示例,也不要将文件用作模块名。在Python中隐藏内置函数不是一个很好的主意。

是否有一种方法可以将文件夹添加到路径中,而不是将单个文件添加到路径中AddPyFile可以获取zip文件。您可以压缩整个源代码树,然后使用addPyFile将其添加到路径中。是否有方法将文件夹添加到路径中,而不是单个文件addPyFile可以接受压缩文件。您可以压缩整个源代码树,然后使用addPyFile添加它。