当前位置:  开发笔记 > 编程语言 > 正文

无法从Spark Submit中的JAR文件加载主类

如何解决《无法从SparkSubmit中的JAR文件加载主类》经验,为你挑选了1个好方法。

我正在尝试运行Spark工作.这是我的shell脚本,位于/home/full/path/to/file/shell/my_shell_script.sh:

confLocation=../conf/my_config_file.conf &&
executors=8 &&
memory=2G &&
entry_function=my_function_in_python &&
dos2unix $confLocation &&
spark-submit \
        --master yarn-client \
        --num-executors $executors \
        --executor-memory $memory \
        --py-files /home/full/path/to/file/python/my_python_file.py $entry_function $confLocation

当我运行它时,我收到一条错误消息:

错误:无法从JAR文件加载主类:/ home/full/path/to/file/shell/my_function_in_python

我的印象是它在错误的位置(python文件位于python目录,而不是shell目录).



1> Dennis Huo..:

--py-files标志用于从您的程序中使用的其他 python文件依赖项; 你可以在SparkSubmit.scala中看到它使用所谓的"主要参数",意思是第一个非标志参数,以确定是否执行"提交jarfile"模式或"提交python main"模式.

这就是为什么你看到它试图加载你的"$ entry_function"作为一个不存在的jar文件,因为它只假设你运行Python,如果主要参数以".py"结尾,否则默认假设你有.jar文件.

而不是使用--py-files,只是让你/home/full/path/to/file/python/my_python_file.py成为主要论点; 然后你可以做花哨的python把"入口函数"作为程序参数,或者你只需​​要在python文件本身的main函数中调用你的入口函数.

或者,您仍然可以使用--py-files然后创建一个新的主.py文件来调用您的入口函数,然后将该主.py文件作为主要参数传递.

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有