我正在尝试从java代码启动Apache Spark作业。文件路径和“符号”中存在问题。代码
String command = sparkPath
+ "bin/spark-submit --class ClassName \"" + curFilePath
+ "\" " + readFilePath + " " + saveFilePath;
System.out.println("Next command: \n " + command);
// run Unix command
Process proc = Runtime.getRuntime().exec(command);
因此,我有错误:
Exception in thread "main" java.net.URISyntaxException: Illegal character in path at index 0: "/home/ubuntu/Desktop/teh2/first-example-1.0.jar"
at java.net.URI$Parser.fail(URI.java:2848)
at org.apache.spark.util.Utils$.resolveURI(Utils.scala:1343)
at org.apache.spark.deploy.SparkSubmitArguments.parse$1(SparkSubmitArguments.scala:338)
但是,如果我删除“围绕curFilePath或从System.out.println复制命令并在命令行中粘贴/执行它,它可以正常使用双引号。
答案 0 :(得分:0)
请检查它被调用的目录。
您可以尝试以下步骤
SPARK_HOME
中添加SPARK_PATH
和$PATH
,如果添加,则可以在没有绝对/相对路径的bin目录中执行脚本Runtime.exec
。使用ProcessBuilder
执行命令,它将接受一个String数组/ List,在列表中添加命令和参数并使用它来执行。