在运行时提交火花后,是否可以向主/工作节点添加额外的jar?

时间:2019-03-19 20:25:40

标签: apache-spark amazon-emr cluster-mode

我正在编写一个可以通过spark提交在运行时间较长的Spark应用程序上运行的服务。该服务在最初提交spark时不知道要在类路径上放什么jar,因此我无法使用--jars来包含它。然后,该服务将侦听可能包含额外jar的请求,然后将它们加载到我的spark节点上,以便可以使用这些jar来完成工作。

我的目标是仅在启动我的服务之初就调用spark提交一次。然后,我尝试通过创建一个新的SparkConf并在其中创建一个新的SparkSession(例如

)来将请求的jar添加到spark会话
SparkConf conf = new SparkConf();
conf.set("spark.driver.extraClassPath", "someClassPath")
conf.set("spark.executor.extraClassPath", "someClassPath")
SparkSession.builder().config(conf).getOrCreate()

我尝试了这种方法,但是由于我的工作无法从罐子中识别出UDF,因此罐子似乎没有加载到执行程序类路径上。我正在尝试立即在Spark客户端模式下运行它。

  1. 是否有办法在提交火花后添加这些罐子 调用并仅更新现有的Spark应用程序,还是只能使用--jars通过另一个包含这些jar的spark-submit进行?
  2. 在这种情况下,将使用群集模式还是客户端模式很重要 情况?

0 个答案:

没有答案