java - 向 Spark 提交 Python 文件和 Java jar - 错误 : No main class set in JAR; please specify one with --class

标签 java python jar pyspark spark-submit

我必须使用 py4j 执行带有用户定义的 Java 函数的 python 文件。 我正在使用 Spark-submit 命令将 pyfile 和 jar 发送给执行器。我为 Py4j 编写的代码将处理其余的事情。

但是我收到了一个错误

Error: No main class set in JAR; please specify one with --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 并不能完成这项工作,因此尝试了第三个参数,这引发了错误。

提前致谢。

最佳答案

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

这解决了我的问题。

关于java - 向 Spark 提交 Python 文件和 Java jar - 错误 : No main class set in JAR; please specify one with --class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44407671/

相关文章:

java - 从 Hadoop 工具传回多个值

java - 如何在 Java Jar 文件中包含 XML 布局文件

python - 如何检查要完成下载 Python3 的文件?

python - 将@property 方法添加到类

python - Pandas - 从包含列表的字典中创建只有一行的数据框

linux - 在 Linux 上运行 .jar 文件

java - Java程序运行时JVM遵循什么顺序?

java - 在不可修改的域 Java 类中覆盖 JAXB 绑定(bind)

java - 没有使用 Hibernate API 为该名称定义查询

java - 从 jsp 页面接收 'null' 值到 Struts 2 Action