gpt4 book ai didi

apache-spark - Spark session /上下文生命周期

转载 作者:行者123 更新时间:2023-12-04 12:42:06 25 4
gpt4 key购买 nike

我不明白 spark session /上下文生命周期是如何工作的。文档说您可以有多个共享底层 SparkContextSparkSession。但是这些是如何/何时创建和销毁的?例如,如果我有一个生产集群并且我 spark-submit 10 个 ETL,这 10 个作业是否会共享相同的 SparkContext?如果我在集群/客户端模式下这样做有关系吗?据我所知,SparkContext 存在于驱动程序中,因此我假设上述情况会导致 10 个 SparkSession 共享一个 SparkContext,但我不确定我是否正确理解了这一点...任何澄清将不胜感激。

最佳答案

让我们了解sparkSession和sparkContext

SparkContext 是访问所有 Spark 功能的 channel 。Spark 驱动程序使用它连接到集群管理器进行通信、提交 Spark 作业并知道要与哪个资源管理器 (YARN) 通信。并且通过SparkContext,driver可以访问SQLContext、HiveContext、StreamingContext等其他上下文来对Spark进行编程。

借助 Spark 2.0,SparkSession 可以通过一个统一的入口点访问上述所有 Spark 功能。

It means SparkSession Encapsulates SparkContext.

假设我们有多个用户访问共享 sparkContext 的同一个笔记本,并且要求有一个共享相同 spark 上下文的隔离环境。在 2.0 之前,解决方案是为每个隔离环境或用户创建多个 sparkContext,即 sparkContext,这是一项昂贵的操作(每个 JVM 存在一个 sparkContext)。但是随着 spark session 的引入,这个问题已经得到解决。

I spark-submit 10 ETLs, will these 10 jobs share the same SparkContext? Does it matter if I do this in cluster/client mode? To the best of my understanding, the SparkContext lives in the driver so I assume the above would result in one SparkContext shared by 10 SparkSessions,

如果您提交 10 个 ETL spark-submit 作业,无论是集群/客户端,它们都是不同的应用程序,并且它们有自己的 sparkContext 和 sparkSession。在 native spark 中,您不能在不同应用程序之间共享对象,但如果您想要共享对象你必须使用共享上下文(spark-jobserver)。有多个选项可用,如Apache Ivy , apache-ignite

关于apache-spark - Spark session /上下文生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57478681/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com