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

如何从现有的SparkContext创建Spark会话

颜功
2023-03-14

我有一个Spark应用程序,它使用Spark 2.0新API和SparkSession。我正在使用SparkContext的另一个应用程序之上构建此应用程序。我想将SparkContext传递给我的应用程序,并使用现有SparkContext初始化SparkSession

然而,我找不到一个方法如何做到这一点。我发现带有SparkContextSparkSession构造函数是私有的,因此我无法以这种方式初始化它,而且生成器不提供任何setSparkContext方法。你认为有什么解决办法吗?

共有3个答案

彭建业
2023-03-14

显然,无法从现有的SparkContext初始化SparkSession

皇甫才良
2023-03-14

就像上面的例子一样,你不能创建,因为Sparksession的构造函数是私有的。相反,你可以使用SparkContext创建一个SQLContext,然后像这样从sql上下文中获取Sparksession

val sqlContext=new SQLContext(sparkContext);
val spark=sqlContext.sparkSession

希望这有帮助

魏岳
2023-03-14

SparkContext甚至SparkConf中导出Sparksession对象很容易。只是您可能会发现API有点复杂。这里有一个例子(我使用的是Spark2.4,但这应该在旧的2. x版本中也能工作):

// If you already have SparkContext stored in `sc`
val spark = SparkSession.builder.config(sc.getConf).getOrCreate()

// Another example which builds a SparkConf, SparkContext and SparkSession
val conf = new SparkConf().setAppName("spark-test").setMaster("local[2]")
val sc = new SparkContext(conf)
val spark = SparkSession.builder.config(sc.getConf).getOrCreate()

希望有帮助!

 类似资料:
  • 我只知道版本差异,但不知道功能或其他。i、 e Sparksession具有内部sparkcontext和conf。

  • 我试图从一个简单的熊猫数据流创建一个火花数据流。这是我遵循的步骤。 在这之前一切都好。输出为: Spark UI 版本:V2.4.0 主人:本地[*]

  • 问题内容: 根据EJB客户端应用程序上的Netbeans教程,我似乎无法调用该方法: 编译错误: 客户: ejb: 远程接口: 现在,如果接口被修改: Bean现在可以使用以下方法: 但是,有一个NPE: 如何正确调用该方法?EJB未实例化? 问题答案: 我从头开始。我能想到的唯一区别是,我没有创建EJB应用程序,而是为bean创建了EJB模块。否则,我认为是相同的。 结构体: 客户代码: 豆:

  • 我在平面地图中有8个字段(字段1、字段2、…、字段8),我想在运行时创建一个地图对象。我想创建一个带有动态键和值元素的地图。 例如。我有像field1,field2,field3这样的关键元素和像field6,field7这样的值元素。以下代码片段工作正常。 但是,键和值元素是动态获取的(如命令行参数)。如果我在数据结构中拥有关键元素,如String或Seq()数组,我如何做类似的映射 输入:例如

  • 我在Intellij IDEA 13.1.5中有一个Groovy项目,我想用Gradle构建它。所以我已经安装了Gradle本身,并在IDEA中启用了Gradle插件。 但是我现在如何从IDEA内部构建项目(或者更好的方法:开始编写Gradle构建文件)呢?我在项目的模块中创建了一个文件,根据文件名旁边的图标,IDEA将其正确识别为Gradle文件。 此外,我不知道如何继续下去。IDEA文档说我应

  • 最后,我使用IDF类将IDF权重应用于术语频率向量。 返回的数据帧的最终结果如下所示--仅显示第一行: 所以前三列是原来的['id'、'title'、'desc']。根据所使用的转换添加新列。如果您看到Tokeniser和StopWords工作正常,因为它们的输出列是正确的。