在 Kubernetes 上提交的一项作业中存在多个 Spark 会话

问题描述 投票:0回答:1

我们可以在一次提交作业中使用 Kubernetes 中的多个启动和停止 Spark 会话吗?

比如:如果我使用这个提交一份工作

bin/spark-submit \
    --master k8s://https://<k8s-apiserver-host>:<k8s-apiserver-port> \
    --deploy-mode cluster \
    --name spark-pi \
    --class org.apache.spark.examples.SparkPi \
    --conf spark.executor.instances=5 \
    --conf spark.kubernetes.container.image=<spark-image> \
    local:///path/to/examples.jar

在我的 python 代码中,我可以启动和停止 Spark 会话吗?

示例:

# start spark session
session = SparkSession \
        .builder \
        .appName(appname) \
        .getOrCreate()

## Doing some operations using spark 
session.stop()

## some python code.

# start spark session
session = SparkSession \
        .builder \
        .appName(appname) \
        .getOrCreate()

## Doing some operations using spark 
session.stop()

可不可以?

apache-spark kubernetes pyspark apache-spark-sql
1个回答
0
投票

您可以使用 session.newSession() 创建一个新的 Spark 会话。新会话将具有隔离的 SQL 配置、临时表、注册函数,但与前一个会话共享底层

SparkContext
和缓存数据。

# start spark session
session1 = SparkSession \
        .builder \
        .appName(appname) \
        .getOrCreate()

# start new spark session
session2 = session1.newSession()
© www.soinside.com 2019 - 2024. All rights reserved.