提交Python文件和Java jar到Spark-错误:在JAR中没有设置主类;请用--class

时间:2017-06-07 08:40:21

标签: java python jar pyspark spark-submit

我必须使用py4j执行带有用户定义的Java函数的python文件。 我正在使用spark-submit命令将pyfiles和jar发送给执行程序。我为Py4j编写的代码将处理剩下的代码。

但是我收到了错误

  

错误:JAR中没有设置主类;请用--class

指定一个

命令如下:

 spark-submit  --files /home/USER/PATH/SOMEFILE.txt --conf spark.executor.extraClassPath= /home/USER/DEFINED_FUNCTIONS/IN JAVA/XYZ/XYZ.jar  --executor-memory 512m  --driver-class-path /home/USER/DEFINED_FUNCTIONS/IN JAVA/XYZ/XYZ.jar  --master local[*]  --jars /home/USER/DEFINED_FUNCTIONS/IN JAVA/XYZ/XYZ.jar  --driver-memory 512m  --py-files /home/USER/PATH/eggs/kafka.egg,/home/USER/PATH/eggs/redis.egg,/home/USER/PATH/helloworld.egg,/home/USER/PATH/helloworld.py

我的问题是我没有指定Java类。我有python文件,所以我应该准确指定什么?

此外,我使用了--jars, - conf spark.executor.extraClassPath,--driver-class-path选项将jar发送到执行程序,因为它包含用户定义的函数。

简单地提到--jars或--driver-class-path没有完成这项工作所以尝试了第三个参数,这引发了错误。

提前致谢。

1 个答案:

答案 0 :(得分:0)

“--conf spark.executor.extraClassPath =”和“/ home / USER / DEFINED_FUNCTIONS / IN JAVA / XYZ / XYZ.jar”之间有一个空格,如下所示 -

  

- conf spark.executor.extraClassPath = / home / USER / DEFINED_FUNCTIONS / IN JAVA / XYZ / XYZ.jar

还将--conf设置移动到spark-submit命令的开头,如下所示:

spark-submit --conf spark.executor.extraClassPath=/home/USER/DEFINED_FUNCTIONS/IN JAVA/XYZ/XYZ.jar   --files /home/USER/PATH/SOMEFILE.txt --executor-memory 512m  --driver-class-path /home/USER/DEFINED_FUNCTIONS/IN JAVA/XYZ/XYZ.jar  --master local[*]  --jars /home/USER/DEFINED_FUNCTIONS/IN JAVA/XYZ/XYZ.jar  --driver-memory 512m  --py-files /home/USER/PATH/eggs/kafka.egg,/home/USER/PATH/eggs/redis.egg,/home/USER/PATH/helloworld.egg,/home/USER/PATH/helloworld.py

这解决了我的问题。