2017-06-15 62 views
1

我正在試圖在一個同事給我的jar文件上運行spark-submit,使用相同的命令在他的電腦上運行它。命令如下:在windows上的spark-submit中傳遞多個-D參數給驅動程序-java選項

spark-submit.cmd --driver-java-options "-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005 -DMASTERNODE=local" --class=MYCLASS file:///path/myjar.jar 

然而,當我運行此我得到的錯誤:

The filename, directory name, or volume label syntax is incorrect.

如果我只傳遞第一個參數,即:

spark-submit.cmd --driver-java-options "-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005" --class=MYCLASS file:///path/myjar.jar 

我得到沒有錯誤,無論我是否使用引號。看起來該命令運行成功。然而,當我嘗試牛逼傳遞兩個參數對TE commandas如下:

cmd /C spark-submit.cmd --driver-java-options -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5008 -DMASTERNODE=local --class=taka.pipelines.AnomalyTxTrainingPipeline file:///cygdrive/c/Users/paul/stream/build/libs/taka-stream-0.1.0-dev_pl-SNAPSHOT-all.jar 

我得到的錯誤:

Error: Unrecognized option: -DMASTERNODE=local

這是無論我是否執行該命令從cygwin的使用CMD功能發生,或者我是否直接從Windows命令提示符執行它。

有人請幫助我嗎?

- 保羅

回答

1

這是火花Windows命令腳本的一個bug,它不能處理與報價,改變火花submit.cmd參數如下:

cmd /V /E /C ""%~dp0spark-submit2.cmd" %*"

所有其他在火花窗口命令腳本包含

cmd /V /E /C "<command>" %*

具有第同樣的問題,用上面類似的方法解決。

+0

什麼是'「」%〜dp0spark-submit2.cmd「%*」'正在做什麼? – Paul

+0

我認爲外面的引用使Windows命令解析器解析命令和參數正確。如果沒有外部引號,Windows命令解析器會將該參數的一部分識別爲該命令。例如,運行命令'spark-submit --driver-class-option「-Dfile.encoding = utf-8」--class '將得到錯誤消息''D:\ software \ spark- 2.1.1-bin-hadoop2.7 \ bin \ spark-submit2.cmd「--driver-class-option」-Dfile.encoding「不被識別爲內部或外部命令, 可操作的程序或批處理文件。 – minixgamma