Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 如何在Spark群集上运行spring boot应用程序_Apache Spark_Apache Spark Sql_Apache Spark 2.0 - Fatal编程技术网

Apache spark 如何在Spark群集上运行spring boot应用程序

Apache spark 如何在Spark群集上运行spring boot应用程序,apache-spark,apache-spark-sql,apache-spark-2.0,Apache Spark,Apache Spark Sql,Apache Spark 2.0,我们已经生成了Spark java spring启动应用程序的Jar。 ./spark-submit --class com.recordlinkage.coreTest.IntegratedRecordLinkageTest --deploy-mode cluster --master spark://UCSL-GKL-HDP-02:6066/home/hadoop/spark-2.1.0-bin-hadoop

我们已经生成了Spark java spring启动应用程序的Jar。

        ./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中运行时没有错误。 当我们试图使用独立的spark提交功能在集群模式下运行它时,我们遇到了一个问题。 我们怀疑像autowired这样的spring变量不在上下文中,因此没有构造对象。 因此,我们得到了null指针异常

        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)
我们正在测试类上运行它,下面是代码

    @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");
      }
     }
    }

请告诉我们如何在集群上运行spring boot应用程序

通过测试“在现实生活中”运行东西是很尴尬的。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();
  }
}

我们尝试了上面的方法,但仍然得到了NullPointer验证。由于日志中缺少信息,我们无法确定异常的原因。您能否提供有关处理此问题的更多线索。如果你能提供任何关于部署Springboot应用程序的链接或文档,那将很有帮助