我想知道,是否有任何方法可以在YARN集群中创建spark-context,然后传入的作业将重用该上下文。在我的集群中,创建上下文需要20分钟,有时甚至更长时间。我正在使用pyspark编写脚本和livy提交作业。
不,你不能只在Yarn中运行一个站立的SparkContext。也许另一个想法是在客户端模式下运行,客户端有自己的SparkContext(这是像Apache Zeppelin和spark-shell这样的工具使用的方法)。
可以选择使用Apache Livy。Livy是Yarn集群中的另一个服务器,它为想要在集群上运行Spark作业的客户机提供接口。Livy的一个特点是你可以
具有长时间运行的Spark上下文,可以由多个客户端用于多个Spark作业
如果客户端是用Scala或Java编写的,则可以使用编程API:
LivyClient client = new LivyClientBuilder()....build();
Object result = client.submit(new SparkJob(sparkParameters)).get();
所有其他客户端都可以使用REST API。