2017-06-23 6 views
1

h20ライブラリを使用するspark上にjarを起動したいとします。私はintellijでscalaプロジェクトを作成し、src/scalaの中にcom.hwパッケージを追加しました。その後、私は簡単なScalaプログラムを書いた。ここで IntellijのH20依存関係を設定してspark-submitで実行

は何の問題もなく、そのライブラリを参照することができ

name := "h20prova" 
version := "1.0" 
scalaVersion := "2.12.1" 
libraryDependencies ++= Seq(
"org.apache.spark" % "spark-core_2.10" % "1.5.1", 
"ai.h2o"%"sparkling-water-core_2.11"%"2.1.9") 

プロジェクトSBTファイルです。

メインクラスcom.hw.h20tryを指定してアーティファクトを作成し、そのアーティファクトを正常にビルドしました。

が、私は、このコマンド

spark-submit --class "com.hw.h20try" h20prova.jar 

を用いたスパークでスクリプトを起動し、次のエラー

java.lang.ClassNotFoundException: com.hw.h20try 
at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Class.java:348) 
at org.apache.spark.util.Utils$.classForName(Utils.scala:229) 
at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:695) 
at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:187) 
at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:212) 
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:126) 
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala) 

私はJavaを使用して同様の問題があったので、それは依存関係の問題だかなり確信しているを持って、コンパイル済みのjarファイルをアーティファクトビルドに追加して解決しました。しかし、私はScalaでJavaを使って何をしたのか再現できないようです。

ScalaプロジェクトをセットアップしてSparkで数分間実行する別の方法がありますか?

+0

更新:sbtビルドプロジェクトのファイルMANIFEST.MFに、com.hwt20tryが見つかりませんでしたが、理由がわかりません。 –

答えて

1

スカラーバージョン(2.12.1)とパッケージバージョン(2.10,2.11)が一致しません。 スカラバージョン2.12ではsparkはサポートされていません。

scalaVersion := "2.12.1" 
libraryDependencies ++= Seq(
"org.apache.spark" % "spark-core_2.10" % "1.5.1", 
"ai.h2o"%"sparkling-water-core_2.11"%"2.1.9") 

したがって、依存関係は次のようになります(スカラバージョン2.11を選択している場合)。

scalaVersion := "2.11.5" 
libraryDependencies ++= Seq(
"org.apache.spark" % "spark-core_2.11" % "1.5.1", 
"ai.h2o"%"sparkling-water-core_2.11"%"2.1.9") 

そしてjava.lang.ClassNotFoundException: com.hw.h20try例外はあなたがそのようなsbt-assemblyとしてプラグインを使用して、依存関係を持つユーバーjarを作成していることを確認してくださいをreg。

コマンドがjar -tf h20prova.jar | grep h20tryで実行され、クラスが実際にパッケージ化され、jarファイルで利用可能かどうかが確認されます。

+0

私はjarファイルでコマンドを実行し、それらのファイルを見つけました: _com /hw/h20try$.class_、 _com/hw/h20try.class_、 _src/main/scala/com/hw/h20try.scala_ まだ、** ClassNotFoundException **を取得しています –

関連する問題