当前位置: 首页 > 知识库问答 >
问题:

为REST服务中的每个endpoint创建单独的SparkSession

锺英彦
2023-03-14

我正在开发一个Java的REST API,它同时命中多个endpoint,所有这些服务都并行运行。我希望我的应用程序为每个终端使用单独的Spark会话。

问题陈述:

每当我使用sparkSession停止sparkSession时。关闭()SparkSession。stop(),它会关闭sparkContext本身,因为并行运行的其他服务会失败,并且每当我再次点击该服务时,sparkContext都无法重新启动。

我尝试了以下方法来解决问题:

  1. 使用SparkSession singleton对象,并使用SparkSession为每个服务创建单独的SparkSession。cloneSession()SparkSession。newSession()并调用SparkSession。关闭()SparkSession。stop()停止会话

问题:停止SparkContext。无法重复或并行调用服务。

创建单个SparkContext对象,并调用java方法为每个服务创建Spark会话(而不是使用单例),如下所示:

SparkContext sparkContext = SparkContext.getOrCreate(sparkCassandraConfig.sparkConf());

SparkSession cloneSparkSession = sparkCassandraConfig.sparkSession(sparkContext).newSession();

其中,sparkCassandraConfig是一个单例,它使用sparkConf()方法获取所需的spark配置,并使用sparkSession(SparkContext)方法构建sparkSession。

然后使用以下命令关闭会话:

cloneSparkSession.close();

问题:如果我按顺序调用服务,但当服务并行运行时失败,这种方法可以工作。

有人能为当前方法提出解决方案吗,或者是否有任何其他方法为每个endpoint创建单独的Spark会话。

任何帮助都很感激!

共有1个答案

薛华容
2023-03-14

创建SparkSession作为静态块,并尝试使用val spark=SprakSession获取SparkSession。getorcreate()方法不要在每个方法中停止会话。

 类似资料:
  • 我正在为某个游戏开发某种“分数跟踪器”应用程序。用户添加一定数量的玩家(当前数量是无限的),然后这些玩家的名字被添加到ArrayList中。然后在下一个活动中,用户必须从一个旋转器中选择一个playername,并为该玩家输入一定数量的“点数”,或者说“分数”。 这是我当前的代码: 现在我要做的是实现一个功能,它将跟踪每个球员的得分。 示例:用户添加了2个玩家,一个叫约翰,一个叫杰克。然后用户给约

  • 我已经发布了带有endpoint的JAX-WSWeb服务。在开发过程中发布。是否存在(JAX-RS中)用于在jersey中发布RESTWeb服务的此类实用程序类?我参考了几篇文章,其中大部分都是基于在一些容器中发布web服务,如Jetty、Grizzly等。

  • 15.1 数据库迁移 这个名字是源自于Ruby On Rails在那时候的印象,不直接使用MySQL的目的在于让我们可以专注于过程。 15.1.1 创建表 表的概念,类似于在Excel中的表,如果你真实不懂数据库。 让我们创建一个athomes的表,为什么是athomes,因为以前在写android程序的时候就叫的是athome,忽略掉这些次要的因素吧。 $ php artisan migrate

  • 当工作人员在创建之后执行任务时,我不断遇到wierdmysql问题。 我们使用django 1.3,芹菜3.1.17,djorm ext pool 0.5 我们用并发3启动芹菜进程。到目前为止,我的观察是,当工人流程开始时,他们都得到相同的mysql定义。我们将数据库连接id记录如下。 当所有工作人员都获得任务时,第一个任务成功执行,但其他两个任务会出现奇怪的Mysql错误。它要么是“Mysql服

  • 问题内容: 我开始使用Continuum.io的Python Anaconda发行版进行工作。 我已经能够启动并运行Anaconda,但是我无法确定Anaconda是否 为它创建的每个新环境都 创建一个新的环境变量,或者它是否依赖于公共系统。 __ 我在文档中找不到关于此的任何信息。 此外,当我执行a时,我没有在新创建的环境中看到变量—尽管我确实找到了一些新的anaconda创建的环境变量。 我能

  • 让我们假设我们有两个微服务:Companys API和accounts API。 我们还有一个仪表板,显示一些关于accounts的数据和可视化。 小部件2-一个piechart,它按帐户的属性之一显示帐户的细分。 小部件3--另一个显示公司账户细分的图表。 理论上,仪表板中的所有小部件都显示关于相同实体-帐户的数据。 现在,我想问一下在UI中获取和显示帐户的两种方法: null null 我的问