2017-03-23 7 views
2

私は糸クラスターモードでspark-submitを使用してスパークジョブを実行しています。実行時に入力と出力のファイルパスを送信するために、入出力パスを含むプロパティファイルをロードしようとしています。スパークヤーンクラスタモードで--properties-fileオプションを使用して余分なスパークプロパティを読み込むには?

プロパティファイル:input.properties

​​3210

私はコマンドの下に使用して自分のアプリケーションを実行していますよ。

 `spark-submit --class Property --master yarn-cluster prop.jar --properties-file input.properties` 

Scalaのコード:

 

    import org.apache.spark.SparkConf 
    import org.apache.spark.SparkContext 
    import java.io.FileInputStream 
    import collection.JavaConversions._ 
    import java.util.Properties; 
    object Property { 
     def main(args: Array[String]) { 
     val conf = new SparkConf().setAppName("myApp"); 
     val sparkContext = new SparkContext(conf); 
     val input=sparkContext.getConf.get("spark.myapp.input") 
     println(input) 
     sparkContext.stop; 
     } 
    } 

私は地元と糸クライアントモードで私のプログラムを実行すると、これらのプロパティにアクセスすることができますよ。しかし、スパーク・サブミット・モードでは、私は例外以下になりつつあります。

 
    ERROR yarn.ApplicationMaster: User class threw exception: java.util.NoSuchElementException: spark.myapp.input 

答えて

1

使用糸を使用している場合は--files input.propertiesを使用してください。私は同じ問題を抱えていて、それは私の問題を解決しました。

+0

- ファイル番号によって送信されたファイルをあなたのスパークコード – AJm

0

私は--filesと​​引数を使用して、Yarnクラスタの削除ドライバで実行されているドライバのプロパティを読み取ります。複数のプロパティファイルはカンマ区切り文字列を使用して指定することができます

spark-submit \ 
    --class com.acme.Main \ 
    --master yarn \ 
    --deploy-mode cluster \ 
    --driver-memory 2g \ 
    --executor-memory 1g \ 
    --driver-class-path "./conf" \ 
    --files "./conf/app.properties,./conf/log4j.properties" \ 
    ./lib/my-app-uber.jar \ 
    "[email protected]" 

注(引用符を忘れないでください)

同じだったかのようにクラスパスリソースとしてこれらのプロパティファイルを読み込むことができますあなたのドライバコードローカルで実行されます。