Spark问题[一]:java.lang.ClassNotFoundException: org.apache.spark.launcher.Main

来源:互联网 发布:闪电邮 mac 编辑:程序博客网 时间:2024/05/18 02:19

Spark问题[一]:java.lang.ClassNotFoundException: org.apache.spark.launcher.Main


在开发中,需要使用crontab调度Shell脚本,来执行Spark任务。手动执行脚本没有问题,但是放到crontab中执行,就报以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/spark/launcher/MainCaused by: java.lang.ClassNotFoundException: org.apache.spark.launcher.Main        at java.net.URLClassLoader$1.run(URLClassLoader.java:217)        at java.security.AccessController.doPrivileged(Native Method)        at java.net.URLClassLoader.findClass(URLClassLoader.java:205)        at java.lang.ClassLoader.loadClass(ClassLoader.java:323)        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)        at java.lang.ClassLoader.loadClass(ClassLoader.java:268)

经查得是crontab在运行过程中找不到当前的环境变量,解决方式有2种:
1:在crontab命令中,添加source命令,或在 shell 脚本中添加source命令:

# 在crontab命令行中添加45 15 * * * source ~/.bash_profile;bash /home/test/test-etl/sbin/crontab_etl.sh# 在shell脚本的最前面添加#! /bin/shsource ~/.bash_profile

2: 通过 which spark-submit 解决,我是通过第2种方式解决的:

SPARK_HOME=`which spark-submit`$SPARK_HOME --class com.test.etl.job.scala.job.ETLJob
阅读全文
0 0
原创粉丝点击