Apache spark spark在部署模式下提交客户端未读取所有JAR

Apache spark spark在部署模式下提交客户端未读取所有JAR,apache-spark,jar,submit,Apache Spark,Jar,Submit,我正试图通过spark submit命令将应用程序提交到spark群集(独立模式)。我在跟踪调查 ,以及依赖。现在的问题是我有奇怪的行为。我的设置如下所示: 我有一个目录,其中包含我的应用程序的所有依赖项jar,即/home/myuser/jars 我的应用程序的jar位于同一目录(/home/myuser/jars),名为dat test.jar dat test.jar中的入口点类位于包路径my.package.path.test Spark master位于spark://master:

我正试图通过spark submit命令将应用程序提交到spark群集(独立模式)。我在跟踪调查 ,以及依赖。现在的问题是我有奇怪的行为。我的设置如下所示:

  • 我有一个目录,其中包含我的应用程序的所有依赖项jar,即
    /home/myuser/jars
  • 我的应用程序的jar位于同一目录(
    /home/myuser/jars
    ),名为
    dat test.jar
  • dat test.jar
    中的入口点类位于包路径
    my.package.path.test
  • Spark master位于
    spark://master:7077
现在,我直接在主节点上提交应用程序,从而使用
client
deploy模式,运行命令

/spark submit--class my.package.path.Test--masterspark://master:7077 --executor memory 5G——执行器内核总数10/home/myuser/jars/*

我收到了一个错误

java.lang.ClassNotFoundException:my.package.path.Test

如果我激活
verbose
模式,我看到被选为包含入口点的jar的
primaryResource
/home/myuser/jars/
中按字母顺序排列的第一个jar(这不是
dat test.jar
),引导(我支持)到
ClassNotFoundException
。同一目录中的所有JAR都作为参数加载

当然如果我跑的话

/spark submit--class my.package.path.Test--masterspark://master:7077 --executor memory 5G——执行器内核总数10/home/myuser/jars/dat test.jar

它找到
Test
类,但找不到其他jar中包含的其他类。最后,如果我使用
--jars
标志并运行

/spark submit--class my.package.path.Test--masterspark://master:7077 --executor memory 5G--执行器内核总数10--jars/home/myuser/jars/*/home/myuser/jars/dat test.jar

我得到了与第一个选项相同的结果。
/home/myuser/jars/
中的第一个jar作为
primaryResource
加载,导致
my.package.path.Test的
ClassNotFoundException
。如果我添加
--jars/home/myuser/jars/*.jar
,则相同

重点是:

  • 出于开发原因,我不希望有一个包含所有依赖项的jar
  • /home/myuser/jars/
    中的jar很多。我想知道是否有一种方法可以将它们全部包含进来,而不是使用逗号分隔的语法
  • 如果我尝试在主节点上使用
    --deploy cluster
    运行相同的命令,我不会得到错误,但是由于其他原因计算失败(但这是另一个问题)
那么,在客户端模式下运行spark submit的正确方法是什么?
谢谢

使用--jars选项无法包含所有jar,您必须创建一个小脚本来枚举它们。这部分有点次优。

使用--jars选项无法包含所有jar,您必须创建一个小脚本来枚举它们。这部分有点次优。

你能让他从一个小例子开始吗?你能让他从一个小例子开始吗?