我知道这是一个微不足道的问题,但我在互联网上找不到答案。
我正在尝试使用main
函数运行带有程序参数(String[] args
)的Java类。
但是,当我使用spark-submit
提交作业并传递程序参数时,就像我使用
java -cp <some jar>.jar <Some class name> <arg1> <arg2>
它不会读取arg
s。
我试过的命令是
bin/spark-submit analytics-package.jar --class full.package.name.ClassName 1234 someargument someArgument
,这给了
Error: No main class set in JAR; please specify one with --class
当我尝试时:
bin/spark-submit --class full.package.name.ClassName 1234 someargument someArgument analytics-package.jar
我得到了
Warning: Local jar /mnt/disk1/spark/1 does not exist, skipping.
java.lang.ClassNotFoundException: com.relcy.analytics.query.QueryAnalytics
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at org.apache.spark.util.Utils$.classForName(Utils.scala:176)
at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:693)
at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:183)
at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:208)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:122)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
我怎样才能传递这些论点?它们在每次运行时都经常更改,并且需要作为参数传递。
答案 0 :(得分:22)
在之前传递的参数.jar文件将成为JVM的参数,其中之后传递的参数将jar文件传递给用户&#39; s程序
bin/spark-submit --class classname -Xms256m -Xmx1g something.jar someargument
此处,s
将等于someargument
,而-Xms -Xmx
将传递到JVM。
public static void main(String[] args) {
String s = args[0];
}
答案 1 :(得分:7)
我从this tutorial找到了正确的命令。
命令的格式应为:
bin/spark-submit --class full.package.name.ClassName analytics-package.jar someargument someArgument
答案 2 :(得分:0)
spark-submit --class SparkWordCount --master yarn --jars <jar1.jar>,<jar2.jar>
sparkwordcount-1.0.jar /user/user01/input/alice.txt /user/user01/output
答案 3 :(得分:0)
第一个无法识别的参数被视为primaryResource(在本例中为jar文件)。结帐SparkSubmitArguments.handleUnknown
primaryResource之后的所有参数均视为应用程序的参数。结帐SparkSubmitArguments.handleExtraArgs
要更好地理解如何解析参数,请检出SparkSubmitOptionParser.parse。从该方法中调用以上两种方法