Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
EMR ClassNotFoundException java中的Spark提交_Java_Apache Spark_Amazon Emr - Fatal编程技术网

EMR ClassNotFoundException java中的Spark提交

EMR ClassNotFoundException java中的Spark提交,java,apache-spark,amazon-emr,Java,Apache Spark,Amazon Emr,我已经绑定了一个spring引导应用程序,在这个应用程序中我创建了spark会话来执行一些操作 然后我将这个jar发送给AWS EMR,并以spark submit或java-jar不工作的可执行文件的形式运行 这是我在使用usjar-tf 当尝试运行 spark-submit --master yarn --deploy-mode client --driver-memory 10G --executor-memory 15G --class com.ati.media.ref.scd.Sch

我已经绑定了一个spring引导应用程序,在这个应用程序中我创建了spark会话来执行一些操作

然后我将这个jar发送给AWS EMR,并以
spark submit
java-jar
不工作的可执行文件的形式运行

这是我在使用us
jar-tf

当尝试运行

spark-submit --master yarn --deploy-mode client --driver-memory 10G --executor-memory 15G --class com.ati.media.ref.scd.ScheduleApplication
我认为错误是错误

java.lang.ClassNotFoundException: com.ati.media.ref.scd.ScheduleApplication
        at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:348)
        at org.apache.spark.util.Utils$.classForName(Utils.scala:235)
        at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:836)
        at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:197)
        at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:227)
        at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:136)
        at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
当我尝试使用

java-jar
应用程序启动时没有任何问题

java-cp
导致与spark submit相同的错误,未找到主计算


这里出了什么问题。我在ScheduleApplication中有主要功能,您需要指定
--jars
或在集群级别配置extrac jars位置

从:

引导操作或自定义配置正在重写该类 路径。发生这种情况时,类加载器仅拾取JAR文件 存在于配置中指定的位置中的

解决此问题的选项很少:

1) 使用jar的路径指定
--jars

spark-submit --deploy-mode client --class org.apache.spark.examples.SparkPi --master yarn spark-examples.jar 100 --jars /home/hadoop/extrajars/*
2) 将自定义JAR(包含缺少的类)的路径添加到Spark类路径

/etc/spark/conf/spark defaults.conf中,将自定义JAR的路径附加到错误堆栈跟踪中指定的类名中。在下面的示例中,/home/hadoop/extrajars/*是自定义JAR路径

例如(如何修改正在运行的群集):

有关更多信息,或如何在新群集上执行此操作,请参阅

spark-submit --deploy-mode client --class org.apache.spark.examples.SparkPi --master yarn spark-examples.jar 100 --jars /home/hadoop/extrajars/*
sudo vim /etc/spark/conf/spark-defaults.conf

spark.driver.extraClassPath :/home/hadoop/extrajars/*
spark.executor.extraClassPath :/home/hadoop/extrajars/*