首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >单个JVM中的多个SparkSessions

单个JVM中的多个SparkSessions
EN

Stack Overflow用户
提问于 2016-10-20 11:55:36
回答 4查看 21.3K关注 0票数 20

我有一个关于在一个JVM中创建多个星火会话的查询。我已经读过,在早期版本的Spark中,不建议创建多个上下文。Spark2.0中的SparkSession也是这样吗?

我正在考虑从UI中调用一个web服务或servlet,然后该服务创建一个火花会话,执行一些操作并返回结果。这将导致为来自客户端的每个请求创建火花会话。推荐这样做吗?

假设我有一种方法,比如:

公共空runSpark()抛出异常{

代码语言:javascript
运行
复制
        SparkSession spark = SparkSession
          .builder()
          .master("spark://<masterURL>")
          .appName("JavaWordCount")
          .getOrCreate();

等等..。

如果我将此方法放入web服务中,会出现JVM问题吗?因此,我可以从主method.But多次调用该方法,但不确定这是否是一个良好的实践。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-10-20 12:09:18

它没有得到支持,也不会得到支持。火花-2243被解析为解决不了问题。

如果您需要多个上下文,有不同的项目可以帮助您(Mist,Livy)。

票数 10
EN

Stack Overflow用户

发布于 2017-03-25 06:08:21

getOrCreate状态的文档化

此方法首先检查是否存在有效的线程本地SparkSession,如果有,则返回该线程。然后检查是否存在有效的全局默认SparkSession,如果是,则返回该缺省值。如果不存在有效的全局默认SparkSession,则该方法将创建一个新的SparkSession,并将新创建的SparkSession指定为全局默认值。

还有一个方法SparkSession.newSession,它指示

使用隔离的SQL配置、临时表、注册函数启动新会话,但共享基础SparkContext和缓存数据。

因此,我猜您的问题的答案是,您可以有多个会话,但是每个SparkContext仍然有一个,您的所有会话都将使用它。

我可以想象,您的web应用程序的一个可能的场景可能是每个请求创建一个SparkSession,或者,例如HTTP,并使用它来隔离每个请求或用户会话<--因为我对Spark非常陌生--有人能证实这一点吗?

票数 17
EN

Stack Overflow用户

发布于 2017-09-12 07:10:12

如果您有现有的火花会话,并希望创建新会话,请在现有的newSession方法上使用SparkSession。

代码语言:javascript
运行
复制
import org.apache.spark.sql.{SQLContext, SparkSession}
val newSparkSession = spark.newSession()

newSession方法使用隔离的tables.The配置创建一个新的火花会话,临时tables.The新会话将共享底层的SparkContext和缓存的数据。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40153728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档