每次在纱线中执行批处理作业时都会创建 Spark 上下文

问题描述

我想知道,有什么方法可以让我在 YARN 集群中创建 spark-context 一次,然后传入的作业将重新使用该上下文。在我的集群中,上下文创建需要 20 秒或更长时间。我使用 pyspark 编写脚本并使用 livy 提交作业。

解决方法

不,您不能只在 Yarn 中运行一个常设 SparkContext。也许另一个想法是在客户端模式下运行,其中客户端有自己的 SparkContext(这是 Apache Zeppelin 和 spark-shell 等工具使用的方法)。

,

一个选项是使用 Apache Livy。 Livy 是 Yarn 集群中的附加服务器,它为想要在集群上运行 Spark 作业的客户端提供接口。 Livy 的特点之一是您可以

长期运行的 Spark Contexts 可用于多个客户端的多个 Spark 作业

如果客户端是用 Scala 或 Java 编写的,则可以使用 programmatic API:

/

所有其他客户端都可以使用 REST API