簡體   English   中英

將類函數傳遞給 PySpark RDD

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM