Apache spark spark在部署模式下提交客户端未读取所有JAR
我正试图通过spark submit命令将应用程序提交到spark群集(独立模式)。我在跟踪调查 ,以及依赖。现在的问题是我有奇怪的行为。我的设置如下所示: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:
- 我有一个目录,其中包含我的应用程序的所有依赖项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,您必须创建一个小脚本来枚举它们。这部分有点次优。你能让他从一个小例子开始吗?你能让他从一个小例子开始吗?