每次在纱线中执行批处理作业时都会创建 Spark 上下文
Posted
技术标签:
【中文标题】每次在纱线中执行批处理作业时都会创建 Spark 上下文【英文标题】:Spark context is created every time a batch job is executed in yarn 【发布时间】:2021-10-04 03:57:01 【问题描述】:我想知道,有什么方法可以让我在 YARN 集群中创建一次 spark-context,然后传入的作业将重新使用该上下文。在我的集群中,上下文创建需要 20 秒甚至更多时间。我正在使用 pyspark 编写脚本并使用 livy 提交作业。
【问题讨论】:
【参考方案1】:一个选项是使用Apache Livy。 Livy 是 Yarn 集群中的附加服务器,它为想要在集群上运行 Spark 作业的客户端提供接口。 Livy 的特点之一是您可以
拥有可被多个客户端用于多个 Spark 作业的长时间运行的 Spark 上下文
如果客户端是用 Scala 或 Java 编写的,则可以使用 programmatic API:
LivyClient client = new LivyClientBuilder()....build();
Object result = client.submit(new SparkJob(sparkParameters)).get();
所有其他客户端都可以使用REST API。
【讨论】:
【参考方案2】:不,你不能只在 Yarn 中运行一个常设的 SparkContext。也许另一个想法是在客户端模式下运行,客户端拥有自己的 SparkContext(这是 Apache Zeppelin 和 spark-shell 等工具使用的方法)。
【讨论】:
嗯。如果有某种机制可以在服务器上添加远程创建的驱动程序,同时提交作业。 ? 是的,应该可以创建一个接受查询并解释它们的应用程序。 Spark thrift-server 就是这样工作的。问题是你正在构建一个完整的应用程序来处理你想要做的事情。客户端模式更简单。以上是关于每次在纱线中执行批处理作业时都会创建 Spark 上下文的主要内容,如果未能解决你的问题,请参考以下文章
如何创建触发器,以便每次帐户的所有者ID更改时都会创建事件?
xcode 6.2 每次运行应用程序时都会创建一个新的模拟器路径