3

我正在编写一个服务,该服务在来自 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-submit 之后添加这些 jars 并仅更新现有的 Spark 应用程序,或者是否只能使用包含这些 jars 的另一个 spark-submit --jars
  2. 在这种情况下使用集群模式与客户端模式是否重要?
4

0 回答 0