Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.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
Java 我是否可以使用spark submit运行不使用';不要立即运行spark作业,而是等待执行REST请求的呼叫者启动它们?_Java_Spring Boot_Apache Spark - Fatal编程技术网

Java 我是否可以使用spark submit运行不使用';不要立即运行spark作业,而是等待执行REST请求的呼叫者启动它们?

Java 我是否可以使用spark submit运行不使用';不要立即运行spark作业,而是等待执行REST请求的呼叫者启动它们?,java,spring-boot,apache-spark,Java,Spring Boot,Apache Spark,我有一个与Apache Spark 2.4.4捆绑在一起的应用程序,用于依赖关系,并通过一个创建192MB uber jar的spring boot maven插件可执行: 应用程序管理 org.springframework.boot springbootmaven插件 重新包装 真的 伴随着配置Spark和其他工具的应用程序.properties # Serveur web. server.port=9090 temp.dir=/data/tmp # Spark spark.app.

我有一个与Apache Spark 2.4.4捆绑在一起的应用程序,用于依赖关系,并通过一个创建192MB uber jar的
spring boot maven插件可执行:


应用程序管理
org.springframework.boot
springbootmaven插件
重新包装
真的
伴随着配置Spark和其他工具的
应用程序.properties

# Serveur web.
server.port=9090

temp.dir=/data/tmp

# Spark
spark.app.name=Config metier-et-gestion
spark.home=.
master.uri=local[6]
spark.driver.memory=4g

# Base de données PostGis
spring.datasource.url=jdbc:postgresql://localhost:5432/comptesfrance 
spring.datasource.username=postgres
spring.datasource.password=postgres
spring.datasource.driver=org.postgresql.Driver
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true
spring.jpa.properties.hibernate.dialect=org.hibernate.spatial.dialect.postgis.PostgisDialect
spring.jpa.database-platform=org.hibernate.spatial.dialect.postgis.PostgisDialect
spring.liquibase.change-log=classpath:/db/changelog/compte-france-postgis-changelog.xml
应用程序通过一个简单的主函数启动

@springboot应用程序
公共类应用程序{
公共静态void main(字符串[]args){
SpringApplication.run(Application.class,args);
}
}
并最终等待来自REST调用方的请求为其提供服务,使用Spark作业生成预期结果

/**
*公社服务休息。
*/
@RestController
@Api(value=“社区薪酬(平衡与个人薪酬)”)
公共类ComptesCommuniesController{
/**获得公司的服务*/
@自动连线
私人平衡CompteService平衡CompteService;
/**会话火花*/
@自动连线
私人SparkSession会议;
/**
*伦沃耶公社。
*@param anneeCOG Année du code officiel géograhique de référence。
*@param annee anneée recherchée。
*@param codecomune Code de la commune。
*@return Liste de ses comptes。
*联合国事件调查局的例外情况。
*/
@请求映射(“/comptes/commune/codecomune”)
@ApiOperation(value=“Retourne les comptes M14 d'une commune”,response=List.class)
@ApiResponses(值={
@ApiResponse(代码=200,message=“公共资源清单”)
}
)   
公共列表获得完整的密码公社(
@ApiParam(name=“anneeCOG”,value=“代码官方指南”,example=“2019”)
@anneeCOG中的RequestParam(name=“anneeCOG”),
@ApiParam(name=“annee”,value=“公司M14外部收支平衡表”,example=“2018”)
@annee中的RequestParam(name=“annee”),
@ApiParam(name=“codeCommune”,value=“Code de la commune don on veut les comptes.”,example=“29046”)
@RequestParam(name=“codeCommune”)字符串codeCommune)抛出TechniqueException{
对象。requirennull(codeCommune,“lenuméro de communite ne peut pas valoir null.”);
List comptes=this.balanceCompteService.obtenirComptes(this.session,anneeCOG,annee,new codecomune(codecomune));
返回薪酬;
}
/**
*伦沃耶公社。
*@param anneeCOG Année du code officiel géograhique de référence。
*@param annee anneée recherchée。
*@param numeroCompte Numéro de compte。
*@return Liste de ses comptes。
*联合国事件调查局的例外情况。
*/
@请求映射(“/comptes/commune/numeriocompt”)
@ApiOperation(value=“重新计算公司M14的股份,用于支付公司的股份”)
公共列表获得公司PARNUMEROCOMPUTE(
@ApiParam(name=“anneeCOG”,value=“代码官方指南”,example=“2019”)
@anneeCOG中的RequestParam(name=“anneeCOG”),
@ApiParam(name=“annee”,value=“公司M14外部收支平衡表”,example=“2018”)
@annee中的RequestParam(name=“annee”),
@ApiParam(name=“numerocompute”,value=“Numéro du compte que'on veut rechercher dans toutes les communities.”,example=“1321”)
@RequestParam(name=“numeriocompt”)字符串numeriocompt)抛出TechniqueException{
Objects.requirennoull(numeriocompt,“没有价值的价值”);
List comptes=this.balanceCompteService.obtenirComptes(this.session,anneeCOG,annee,new numeriocompt(numeriocompt));
返回薪酬;
}
}
通过这种方式,此应用程序运行良好。但是由于很多原因,将它与嵌入式的apachespark捆绑在一起会给我带来一些麻烦。我更希望使用一个外部Spark实例,由其他人解压/安装,在这里我的应用程序只能插入。在我看来,我会在提供的范围内使用Spark依赖项来编译它

但是如果我这样做,我将拥有一个只有130MB的uber jar,但是我将如何在我要交付它的计算机上使用现有的
ApacheSpark
运行它呢

  • spark submit
    accept是否会启动一个类,该类不会立即运行spark作业,并返回与经典SparkPi示例类似的结果,而只等待以后的调用

  • spark class
    是一个可以提供解决方案的命令吗


我不知道我是否能以这种方式参与进来,或者它是否注定要失败。这是否是一个聪明的想法。

apache livy项目可能适合您的需要@马扬克:是的,这可能是一种方式。我很高兴地看到,对于每个问题,似乎总是有一个解决方案。但这是一个0.60版的孵化器项目。。。我还要加上ApacheZeppelin,孵化器0.82。。。无论如何,应该首先部署Spark集群(或本地),而我的问题仍然是一样的:我不知道如何单独部署
ApacheSpark
,一种在不立即尝试完成Spark作业的情况下启动的方式。