[英]Passing class functions to PySpark RDD
我在這里的 Python 文件中有一個名為 some_class() 的類:
/some-folder/app/bin/file.py
我將它導入到我的代碼中:
/some-folder2/app/code/file2.py
經過
import sys
sys.path.append('/some-folder/app/bin')
from file import some_class
clss = some_class()
我想在火花地圖中使用這個類的名為 some_function 的函數
sc.parallelize(some_data_iterator).map(lambda x: clss.some_function(x))
這給了我一個錯誤:
No module named file
而 class.some_function 當我在 pyspark 的 map 函數之外調用它時,即通常但不在 pySpark 的 RDD 中。 我認為這與pyspark有關。 我不知道我哪里出錯了。
我試過廣播這門課,但仍然沒有奏效。
所有 Python 依賴項都必須出現在工作節點的搜索路徑上,或者使用SparkContext.addPyFile
方法手動分發,因此這樣的事情應該可以解決問題:
sc.addPyFile("/some-folder/app/bin/file.py")
它將文件復制到所有工作人員並放置在工作目錄中。
附帶說明,請不要使用file
作為模塊名稱,即使它只是一個示例。 在 Python 中隱藏內置函數不是一個好主意。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.