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

标签 apache-spark

我有一个协调批处理作业执行的应用程序,我想为每个作业执行创建一个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/

相关文章:

r - 我如何在 Spark shell 中加载持久数据帧

scala - Spark 的分层聚合集群

python - 如何展平在 PySpark 中使用 zip 转换创建的元组

python - 如何使用 Spark SQL 在 group by 之后添加稀疏向量?

python - 在Python中分隔的Spark saveAsTextFile选项卡

python - Spark : how to generate several elements in map (python)?

scala - Spark-Scala HBase 表创建失败(MetaException(消息 :file:/user/hive/warehouse/src is not a directory or unable to create one)

hadoop - 使用 SparkSQL 连接器从 Hadoop HDFS 读取数据以在 Superset 中可视化?

apache-spark - group by 子句中的 sparkSQL Map 列

java - 加载到 Spark 数据集中的文件列表