2016-09-15 12 views
2

私はEMAR 5.0とSpark 2.0.0を使用しています。私はsetSparkHomeを使用してSPARK_HOMEを設定する必要がorg.apache.spark.launcher.SparkLauncherAWS EMRクラスタでSparkLauncherを使用している場合のSPARK_HOMEがありません

を使用してScalaのスパークアプリケーションから子スパークアプリケーションを実行しようとしています :

私はへの適切なパスを見つけることができます
var handle = new SparkLauncher() 
    .setAppResource("s3://my-bucket/python_code.py") 
    .setAppName("PythonAPP") 
    .setMaster("spark://" + sparkSession.conf.get("spark.driver.host") +":"+ sparkSession.conf.get("spark.driver.port")) 
    .setVerbose(true) 
    .setConf(SparkLauncher.EXECUTOR_CORES, "1") 
    .setSparkHome("/srv/spark") // not working 
    .setDeployMode("client") 
    .startApplication(
     new SparkAppHandle.Listener() { 

     override def infoChanged(hndl: SparkAppHandle): Unit = { 
      System.out.println(hndl.getState() + " new state !") 
     } 

     override def stateChanged(hndl: SparkAppHandle): Unit = { 
      System.out.println(hndl.getState() + " new state !") 
     } 
     }) 

私のスパークホーム? クラスタは、1つのマスター、1つのコア、1つのタスクサーバーから構築されます。

ありがとうございます!

答えて

2

emr-4.0.0以降、EMR上のすべてのアプリケーションは/ usr/libにあります。 Sparkは/ usr/lib/sparkにあります。

+0

ありがとう、私はまだ同じエラーが発生します: '16/09/18 09:07:02エラーApplicationMaster:ユーザークラスが例外を投げました:java.io.IOException:"/usr/lib/sparkプログラムを実行できません/ bin/spark-submit ":エラー= 2、そのようなファイルまたはディレクトリがありません java.io.IOException:"/usr/lib/spark/bin/spark-submit "プログラムを実行できません:error = 2、 java.lang.ProcessBuilder.start(ProcessBuilder.java:1048) org.apache.spark.launcher.SparkLauncher.startApplicationで\t(SparkLauncher.java:428) ' – Ulile

+0

でディレクトリ \tあなたはマスター・インスタンス上でこれを実行していません? Sparkがインストールされている場合、/ usr/lib/sparkは確実にマスタに存在しますが、他のモードでは存在しません。 –

+0

Btw、Spark masterをspark:// ...に設定していることに気付きましたが、YARN上で実行されるため、Spark on EMRは正しくありません。正しいスパークマスターは単なる「糸」です。 –

関連する問題