在windows上的spark submit中将多个-D参数传递给驱动程序java选项
我在一台windows机器上工作,试图在一个同事给我的jar文件上运行spark submit,他使用相同的命令在自己的计算机上运行该文件时没有遇到任何问题。该命令如下所示:在windows上的spark submit中将多个-D参数传递给驱动程序java选项,java,apache-spark,Java,Apache Spark,我在一台windows机器上工作,试图在一个同事给我的jar文件上运行spark submit,他使用相同的命令在自己的计算机上运行该文件时没有遇到任何问题。该命令如下所示: spark-submit.cmd --driver-java-options "-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005 -DMASTERNODE=local" --class=MYCLASS file:///path/myjar.
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
但是,当我运行此命令时,会出现以下错误:
文件名、目录名或卷标语法不正确
如果我只通过第一个参数,即:
spark-submit.cmd --driver-java-options "-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005" --class=MYCLASS file:///path/myjar.jar
无论我是否使用引号,我都不会出错。而且命令似乎已成功运行。但是,当我尝试将两个参数传递给commande时,如下所示:
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
我得到一个错误:
错误:无法识别的选项:-DMASTERNODE=local
无论我是使用cmd函数从cygwin执行命令,还是直接从windows命令提示符执行命令,都会发生这种情况
有人能帮帮我吗
-Paul这是spark windows命令脚本的一个错误,它无法处理带引号的参数,请将spark-submit.cmd更改为以下内容:
cmd/V/E/C“%~dp0spark-submit2.cmd”%*“
spark中包含的所有其他windows命令脚本
cmd/V/E/C”“%*
如果有相同的问题,请用上面类似的方法解决。%~dp0spark-submit2.cmd“%*”的作用是什么?我认为外部的引号可以使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”未被识别为内部或外部命令、可操作程序或批处理文件。