我有這樣的路徑下保存的這2個文件:PySpark覆蓋加入sc.addPyFile
C:\代碼\ SAMPLE1 \ main.py
def method():
return "this is sample method 1"
C:\代碼\ SAMPLE2 \ main.py
def method():
return "this is sample method 2"
然後我運行此:
from pyspark import SparkContext
from pyspark.sql import SparkSession
sc = SparkContext()
spark = SparkSession(sc)
sc.addPyFile("~/code/sample1/main.py")
main1 = __import__("main")
print(main1.method()) # this is sample method 1
sc.addPyFile("~/code/sample2/main.py") # Error
錯誤是
Py4JJavaError:調用o21.addFile時發生錯誤。文件C:\ Users \ hans.yulian \ AppData \ Local \ Temp \ spark-5da165cf-410f-4576-8124-0ab23aba6aa3 \ userFiles-25a7ca23-84fb-42b7-95d9-206867fb9dfd \ main.py存在並且與/C:/Users/hans.yulian/Documents/spark-test/main2/main.py的內容不匹配
這意味着它的臨時文件中已經有「main.py」文件文件夾和內容不同。我不知道是否有這種情況下,任何解決辦法,但對我來說,我有以下的限制:
- 的文件名還是要「main.py」,只有文件夾可以 不同
- 這沒關係以某種方式清除臨時文件夾添加AGA
- 在另一個文件中,我有唯一的解決方法是通過在main.py的前面附加隨機 字符串,例如abcdemain.py和 fghijmain.py,那麼我會import main = __import __(「abcdemain」), ,但是這個人是不是真的最好