我知道一個人可以通過spark-submit和--files選項發送文件,但是也可以發送整個文件夾嗎?我可以使用spark-submit發送整個文件夾嗎?
其實我想發送lib文件夾,包含外部庫的jar文件。或者--jar選項已經在執行文件目錄中創建了一個lib文件夾?在我的情況下,有必要,有一個lib文件夾,否則會給出錯誤。
我知道一個人可以通過spark-submit和--files選項發送文件,但是也可以發送整個文件夾嗎?我可以使用spark-submit發送整個文件夾嗎?
其實我想發送lib文件夾,包含外部庫的jar文件。或者--jar選項已經在執行文件目錄中創建了一個lib文件夾?在我的情況下,有必要,有一個lib文件夾,否則會給出錯誤。
不,火花提交--files
選項不支持發送文件夾,但可以將所有文件放在一個zip文件中,使用--files
列表中的文件。您可以在火花作業中使用SparkFiles.get(filename)
加載文件,將其分解並使用分解文件。 '文件名'不需要是絕對路徑,只是文件名就可以。
PS:它只在SparkContext初始化後才起作用。
我不明白你的答案。所以,如果我把這些文件放在一個zip文件中,比如說lib.zip,會不會在執行程序的目錄中的文件夾lib中提取文件? – pythonic
Nopes,我指的是傳遞一個包含多個conf文件的文件夾,而我的答案與--files相關。 --jars和--files都將文件複製到執行程序的工作目錄,但在--files中給出的jar列表不會包含在classpath中。爲了在classpath中使用jar,jar必須在--jars列表中給出。 --jar不支持文件夾包含。 – Shahzad
在--jars列表中提供--files,依賴項中的conf文件,你應該很好,因爲它們會被自動複製到執行程序的工作目錄中。 – Shahzad
我認爲你有多種解決方案來做到這一點。
首先我可以理解你想自動化這個,但是如果你沒有太多的罐子,你可以把它們作爲參數一一傳遞給- 罐子選項。
否則,你可以只是sudo mv你的Spark安裝的spark/jars目錄中的所有jar文件,但是在羣集的情況下它很煩人。
所以最後,你可以做到這一點
此,如果您需要在集羣模式不能解決問題。對於集羣模式,我只需修改用於查詢JAR的HDFS目錄的bash代碼。並把所有的罐子放在HDFS目錄中。
可能還有其他的解決方案,但是這是我的想法,
有良好的週末!
嗯,我有一個python腳本,它可以讀取所有jar文件,但問題是如何讓它們在執行程序目錄的lib文件夾中。默認情況下spark-submit將由--jars指定的所有文件放在lib文件夾中,或者我必須自己創建一個。 – pythonic
當你說jar文件時,你的意思是你的代碼需要外部庫嗎?或者你編譯的Spark代碼可執行文件 – tricky
是的外部庫 – pythonic