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
オブジェクトには、 (フォルダーから) Perl スクリプトを実行しようとするDoSomething.scala
メソッド (と呼びましょう) があります。2 つの引数を使用してスクリプトに渡します (最初の引数は、バイナリ ファイルへの絶対パスとして使用されます)。入力、2 番目は生成された出力ファイルのパス/名前です)。私はそれから電話します。doSomething()
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
のものであることがわかります。