我正在编写一个可以通过spark提交在运行时间较长的Spark应用程序上运行的服务。该服务在最初提交spark时不知道要在类路径上放什么jar,因此我无法使用--jars
来包含它。然后,该服务将侦听可能包含额外jar的请求,然后将它们加载到我的spark节点上,以便可以使用这些jar来完成工作。
我的目标是仅在启动我的服务之初就调用spark提交一次。然后,我尝试通过创建一个新的SparkConf
并在其中创建一个新的SparkSession
(例如
SparkConf conf = new SparkConf();
conf.set("spark.driver.extraClassPath", "someClassPath")
conf.set("spark.executor.extraClassPath", "someClassPath")
SparkSession.builder().config(conf).getOrCreate()
我尝试了这种方法,但是由于我的工作无法从罐子中识别出UDF,因此罐子似乎没有加载到执行程序类路径上。我正在尝试立即在Spark客户端模式下运行它。
--jars
通过另一个包含这些jar的spark-submit进行?