gpt4 book ai didi

apache-spark - 创建许多短暂的SparkSession

转载 作者:行者123 更新时间:2023-12-04 05:04:21 29 4
gpt4 key购买 nike

我有一个协调批处理作业执行的应用程序,我想为每个作业执行创建一个SparkSession-尤其是为了使注册的临时 View ,函数等完全分开。

因此,这将导致每天成千上万个SparkSession,仅在工作期间(从几分钟到几个小时)有效。有什么理由不这样做吗?

我知道一个事实,每个JVM只有一个SparkContext。我也知道SparkContext执行一些JVM全局缓存,但这对这种情况到底意味着什么?什么是缓存在SparkContext中,如果使用这些 session 执行许多 Spark 作业,将会发生什么?

最佳答案

这显示了如何使用不同的配置来构建多个 session

使用

spark1.clearActiveSession();

spark1.clearDefaultSession();

清除 session 。

 SparkSession spark1 = SparkSession.builder()
.master("local[*]")
.appName("app1")
.getOrCreate();
Dataset<Row> df = spark1.read().format("csv").load("data/file1.csv");
df.show();
spark1.clearActiveSession();
spark1.clearDefaultSession();
SparkSession spark2 = SparkSession.builder()
.master("local[*]")
.appName("app2")
.getOrCreate();
Dataset<Row> df2 = spark1.read().format("csv").load("data/file2.csv");
df2.show();

您的问题。
Spark上下文将rdds保存在内存中,以加快处理速度。
如果有大量数据。保存表或rdds将移至hdd。
如果 session 在任何时候都另存为 View ,则可以访问表。
最好使用唯一的ID为您的作业执行多个spark-submit,而不要使用不同的配置。

关于apache-spark - 创建许多短暂的SparkSession,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43013542/

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