1

我必须使用 py4j 执行带有用户定义的 Java 函数的 python 文件。我正在使用 spark-submit 命令将 pyfiles 和 jars 发送给执行程序。我为 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 没有做这项工作,所以尝试了第三个参数,这引发了错误。

提前致谢。

4

1 回答 1

1

“--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

这解决了我的问题。

于 2017-06-07T12:27:19.363 回答