2017-04-21 27 views
3

Spark Java Spring起動アプリケーションのJarファイルを生成しました。
SparkクラスタでSpring起動アプリケーションを実行する方法

 ./spark-submit --class com.recordlinkage.coreTest.IntegratedRecordLinkageTest 
       --deploy-mode cluster 
       --master spark://UCSL-GKL-HDP-02:6066/home/hadoop/spark-2.1.0-bin-hadoop2.7/bin/AIRecordLinkage.jar 

それは、我々はjarファイルにエクスポートする前に、それをを開発したシステムでは、Eclipseでエラーなしで実行されます。 スタンドアロンのスパーク送信機能を使用してクラスタモードで実行しようとすると、問題が発生しています。 autowiredのようなスプリング変数がコンテキスト内にないと疑われているため、オブジェクトは構築されません。 そこで我々は、我々はテストクラスでそれを実行している

 Exception in thread "main" java.lang.NullPointerException 
       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.worker.DriverWrapper$.main(DriverWrapper.scala:58) 
       at org.apache.spark.deploy.worker.DriverWrapper.main(DriverWrapper.scala) 

nullポインタ例外が、ここ

@RunWith(SpringRunner.class) 
    @SpringBootTest 
    public class IntegratedRecordLinkageTest { 
    @Autowired 
    private LoadCSV loadCSV; 

    @Autowired 
    private Environment envirnoment; 

    @Autowired 
    private IntegratedRecordLinkage integratedRecordLinkage; 


    @Test 
    public void testLoadCSVFile() { 

     try{ 
     integratedRecordLinkage.link(); 
     } 
     catch(Exception e){ 
     e.printStackTrace(); 
     Assert.fail("Exception Occurred"); 
     } 
    } 
    } 
親切

私たちは、クラスタ上で春のブートアプリケーションを実行する方法を知っている以下のコードで取得している

答えて

2

テストを経て "実生活で"物事を実行するのは面倒です。 Maven自体以外の多くのビルドツールで使用されるMaven設定モデルは、コンパイル、ランタイム、テストなどのスコープに応じて異なる場所にコードと設定があると想定しています。ランタイムスコープでテストを実行しても、私にはたくさんの意味があります。正統性のないものを試してみては大丈夫ですが、あなたの現在のセットアップは、それが価値あるものよりずっと面倒なようです。

代わりに、私は物事にあなたがすることになっている方法を実行します:

@SpringBootApplication 
@EnableBatchProcessing 
public class AIRecordLinkage implements CommandLineRunner { 

    @Autowired 
    private LoadCSV loadCSV; 

    @Autowired 
    private Environment environment; 

    @Autowired 
    private IntegratedRecordLinkage integratedRecordLinkage; 


    public static void main(String[] args) { 
    SpringApplication.run(AIRecordLinkage.class, args); 
    } 

    @Override 
    public void run(String... args) throws Exception { 
    integratedRecordLinkage.link(); 
    } 
} 
+1

私たちは、上記の方法を試してみました、しかし、まだ発生する、NullPointer exeptionを取得。ログに情報がないために例外の原因を特定できません。この問題を処理する上での手掛かりがあります。 Springbootアプリケーションのデプロイに関するリンクやドキュメントを提供することができれば助かります – Shreeharsha

関連する問題