我有一个使用 Maven(作为 jar)构建并使用脚本部署的Spark Streaming应用程序。spark-submit
应用项目布局遵循标准目录布局:
myApp
src
main
scala
com.mycompany.package
MyApp.scala
DoSomething.scala
...
resources
aPerlScript.pl
...
test
scala
com.mycompany.package
MyAppTest.scala
...
target
...
pom.xml
在DoSomething.scala
对象中,我有一个方法(我们称之为doSomething()
)尝试执行 Perl 脚本—— aPerlScript.pl
(从resources
文件夹中)——使用scala.sys.process.Process
并向脚本传递两个参数(第一个是二进制文件的绝对路径,用作输入,第二个是生成的输出文件的路径/名称)。然后我打电话DoSomething.doSomething()
。
问题是我无法访问脚本,不能使用绝对路径、相对路径、getClass.getClassLoader.getResource、getClass.getResource,我已经在我的pom.xml
. 我的尝试都没有成功。我不知道如何找到我放在 src/main/resources 中的东西。
我将不胜感激。
旁注:
- 我使用外部流程而不是 Spark 管道,因为在我的工作流程的这一步,我必须将二进制文件作为输入和输出来处理。
- 我正在使用 Spark-streaming 1.1.0、Scala 2.10.4 和 Java 7。我在 Eclipse (Kepler) 中使用“Maven install”构建 jar
- 当我使用
getClass.getClassLoader.getResource
“标准”方法访问资源时,我发现实际的类路径是spark-submit
脚本的路径。