2016-09-30 5 views
3

私はEMR 5.0クラスタを実行していますが、HUEを使用して、OARZIEワークフローを作成してSPARK 2.0ジョブを送信しています。私は、YARNで直接スパーク・サブミットして、同じクラスタ上のステップとしてジョブを実行しました。問題ない。私はHUEでそれを行うときしかし、私は次のエラーを取得する:私は私のスパーク・ジョブで(代わりに私がSparkContextを使用)spark.sqlまたはSparkSessionを使用しない場合はEMR 5.0でSparkSessionをインスタンス化できませんHUE

java.lang.IllegalArgumentException: Error while instantiating 'org.apache.spark.sql.internal.SessionState': 
    at org.apache.spark.sql.SparkSession$.org$apache$spark$sql$SparkSession$$reflect(SparkSession.scala:949) 
    at org.apache.spark.sql.SparkSession.sessionState$lzycompute(SparkSession.scala:111) 
    at org.apache.spark.sql.SparkSession.sessionState(SparkSession.scala:110) 
    at org.apache.spark.sql.SparkSession.conf$lzycompute(SparkSession.scala:133) 
    at org.apache.spark.sql.SparkSession.conf(SparkSession.scala:133) 
    at org.apache.spark.sql.SparkSession$Builder$$anonfun$getOrCreate$5.apply(SparkSession.scala:838) 
    at org.apache.spark.sql.SparkSession$Builder$$anonfun$getOrCreate$5.apply(SparkSession.scala:838) 
    at scala.collection.mutable.HashMap$$anonfun$foreach$1.apply(HashMap.scala:99) 
    at scala.collection.mutable.HashMap$$anonfun$foreach$1.apply(HashMap.scala:99) 
    at scala.collection.mutable.HashTable$class.foreachEntry(HashTable.scala:230) 
    at scala.collection.mutable.HashMap.foreachEntry(HashMap.scala:40) 
    at scala.collection.mutable.HashMap.foreach(HashMap.scala:99) 
    at org.apache.spark.sql.SparkSession$Builder.getOrCreate(SparkSession.scala:838) 
    at be.infofarm.App$.main(App.scala:22) 
    at be.infofarm.App.main(App.scala) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.apache.spark.deploy.yarn.ApplicationMaster$$anon$2.run(ApplicationMaster.scala:627) 
Caused by: java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
    at org.apache.spark.sql.SparkSession$.org$apache$spark$sql$SparkSession$$reflect(SparkSession.scala:946) 
    ... 19 more 
Caused by: java.lang.IllegalArgumentException: Error while instantiating 'org.apache.spark.sql.internal.SharedState': 
    at org.apache.spark.sql.SparkSession$.org$apache$spark$sql$SparkSession$$reflect(SparkSession.scala:949) 
    at org.apache.spark.sql.SparkSession$$anonfun$sharedState$1.apply(SparkSession.scala:100) 
    at org.apache.spark.sql.SparkSession$$anonfun$sharedState$1.apply(SparkSession.scala:100) 
    at scala.Option.getOrElse(Option.scala:121) 
    at org.apache.spark.sql.SparkSession.sharedState$lzycompute(SparkSession.scala:99) 
    at org.apache.spark.sql.SparkSession.sharedState(SparkSession.scala:98) 
    at org.apache.spark.sql.internal.SessionState.<init>(SessionState.scala:153) 
    ... 24 more 
Caused by: java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
    at org.apache.spark.sql.SparkSession$.org$apache$spark$sql$SparkSession$$reflect(SparkSession.scala:946) 
    ... 30 more 
Caused by: java.lang.Exception: Could not find resource path for Web UI: org/apache/spark/sql/execution/ui/static 
    at org.apache.spark.ui.JettyUtils$.createStaticHandler(JettyUtils.scala:182) 
    at org.apache.spark.ui.WebUI.addStaticHandler(WebUI.scala:119) 
    at org.apache.spark.sql.execution.ui.SQLTab.<init>(SQLTab.scala:32) 
    at org.apache.spark.sql.internal.SharedState$$anonfun$createListenerAndUI$1.apply(SharedState.scala:96) 
    at org.apache.spark.sql.internal.SharedState$$anonfun$createListenerAndUI$1.apply(SharedState.scala:96) 
    at scala.Option.foreach(Option.scala:257) 
    at org.apache.spark.sql.internal.SharedState.createListenerAndUI(SharedState.scala:96) 
    at org.apache.spark.sql.internal.SharedState.<init>(SharedState.scala:44) 
    ... 35 more 

それが正常に動作します。誰かが何が起こっているかの手がかりを持っているなら、私はとても感謝しています。

EDIT 1

私のMavenのアセンブリ

<build> 
<sourceDirectory>src/main/scala</sourceDirectory> 
<testSourceDirectory>src/test/scala</testSourceDirectory> 
<plugins> 
    <plugin> 
    <groupId>net.alchim31.maven</groupId> 
    <artifactId>scala-maven-plugin</artifactId> 
    <version>3.1.3</version> 
    <executions> 
     <execution> 
     <goals> 
      <goal>compile</goal> 
      <goal>testCompile</goal> 
     </goals> 
     <configuration> 
      <args> 
      <arg>-dependencyfile</arg> 
      <arg>${project.build.directory}/.scala_dependencies</arg> 
      </args> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 

    <plugin> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <configuration> 
     <archive> 
     <manifest> 
      <mainClass>be.infofarm.App</mainClass> 
     </manifest> 
     </archive> 
     <descriptorRefs> 
     <descriptorRef>jar-with-dependencies</descriptorRef> 
     </descriptorRefs> 
    </configuration> 
    <executions> 
     <execution> 
     <id>make-assembly</id> <!-- this is used for inheritance merges --> 
     <phase>package</phase> <!-- bind to the packaging phase --> 
     <goals> 
      <goal>single</goal> 
     </goals> 
     </execution> 
    </executions> 
    </plugin> 
</plugins> 

+1

役立ちますあなたの脂肪質の瓶をどのように構築するかと関係があります。 JettyUtilsは静的パッケージorg/apache/spark/sql/execution/ui/staticからファイルを取得できません。あなたのMavenアセンブリプラグインコードを提供できますか? – RudyVerboven

+0

プラグインコードのチェック用 –

答えて

1

あなたはすべての依存jarファイルを火花提出してjarファイルを実行すると、マシンのクラスパス上で利用可能ですが、あなたは使用して同じことを実行するときoozieこれらの瓶はOozieの 'sharelib'で利用できません。 あなたは

hdfs dfs -put /usr/lib/spark/jars/*.jar /user/oozie/share/lib/lib_timestamp/spark/ 

だけでHDFSにjarファイルをアップロードすると、必要にsharelibするためにそれらを追加しません

HDFSに次のコマンドをローカルマシンから

oozie admin -shareliblist spark 

ステップ1.アップロードに必要なjarファイルを実行することによって、同じことを確認することができます

oozie admin -sharelibupdate 

希望を実行することにより、sharelibを更新し、このことはあり

関連する問題