2017-09-13 1 views
0

Javaについては、log4jという使用に関する質問とJava用の構成ファイルlog4j.propertiesがあります。EMRクラスターでapache sparkジョブのlog4jをカスタマイズする

log4j.propertiesを私のSparkジョブ「jar」ファイルと一緒に添付しました.EMRクラスタに送信すると、アプリケーションはlog4j.propertiesファイルを初期化します。ここで

が私のコード例である:それは働く私のローカルマシン上

public static void initializeLogger() { 
      try { 
       Properties logProperties = new Properties(); 
       logProperties.load(RddReadUtils.class.getClassLoader() 
    .getResourceAsStream("resources/log4j.properties")); 
       PropertyConfigurator.configure(logProperties); 

      } catch (IOException e) { 
       e.printStackTrace(); 
      } 

     } 

、EMRクラスタでは機能しません。誰でも助けることができますか?
ありがとうございます

+0

あなたはエグゼキュータまたはドライバ上でこのコードを実行していますか? sparkContextを使用して直接ログレベルを変更することもできます。 –

+0

sparkcontextを使用して、変更ログレベルに関するいくつかの例を直接表示できますか?私のsparkアプリケーションがEMRクラスターで動作しているので、main()関数はDriver – user2953788

+0

'sparkContext.setLogLevel(" DEBUG ")' –

答えて

0

クラスタでジョブを実行すると、log4jはクラスタ内で構成されたプロパティファイルを使用します。あなたの仕事は環境からより独立しているので、これは理にかなっています。

あなたは、特定のプロパティファイルを使用したい場合は、次の操作を行うことができますあなたのlog4j.propertiesがクラスタ

  • のどこかにファイル

    • プレイスには向いて、設定パラメータを使用してジョブを実行しますプロパティファイルに追加します。

    あなたとあなたのジョブを実行すると仮定すると、火花提出する次のように実行することができ、:

    spark-submit --driver-java-options "-Dlog4j.configuration=file:///absolute/path/to/log4j.properties" job.jar 
    
  • 関連する問題