2017-08-28 157 views
1

我使用Eclipse - > New Scala Project在scala中编写了一个简单的应用程序。使用spark-submit提交Spark Scala作业时出错使用spark-submit

我正在使用Scala 2.10.6和Spark 2.0.2。该应用程序正在编译没有错误,我也导出了jar文件。

我使用下面的命令来执行JAR

spark-submit TowerTest.jar --class com.IFTL.EDI.LocateTower MobLocationData Output1 

Scala的代码片段如下

package com.IFTL.EDI 

import scala.math.pow 
import org.apache.spark.SparkContext 
import org.apache.spark.SparkContext._ 
import org.apache.spark.SparkConf 

object LocateTower { 
def main(args: Array[String]){ 

//create Spark context with Spark configuration 
val sc = new SparkContext(new SparkConf().setAppName("TowerCount")) 

//helper to add locations function used as a helper in finding tower 
centroid 
def addLocations(p1: (Double,Double), p2: (Double,Double)) ={ 
(p1._1 + p2._1,p1._2 + p2._2) 
} 
} 

这不是完整的代码。当我运行这个时,我得到以下错误。

[[email protected] ~]$ spark-submit --class com.IFTL.EDI.LocateTower 
TowerTest.jar MobLocationData LocationOut1 
java.lang.ClassNotFoundException: com.IFTL.EDI.LocateTower 
at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Class.java:270) 
at org.apache.spark.util.Utils$.classForName(Utils.scala:176) 
at 

org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$ 
runMain(SparkSubmit.scala:689) 
at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:181) 
at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:206) 
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:121) 
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala) 

我是新来的火花和斯卡拉,所以不知道我错过了什么。

+0

是包'com.IFTL.EDI'内部类? – philantrovert

+0

是的,它是..我忘记标记第一行(包com.IFTL.EDI)作为代码.. – SuSri

回答

0

试一下这个命令,如果你想传递一些参数,你可以把它们放在jar文件后面,确保你指定了jar的路径或者从jar位置运行它 spark-submit --class com.IFTL .EDI.LocateTower /Users/myJarFilePath/TowerTest.jar

尝试这样的第一,那些你有工作,你可以添加命令行参数

+0

我尝试了类似'spark-submit --class com.IFTL.EDI.LocateTower/home/cloudera/TowerTest .jar'但仍然得到相同的错误... – SuSri

+0

什么是你的构建工具,创建和uber jar文件 – Dima

+0

我用eclipse(Oxygen Release(4.7.0))和Scala IDE 4.2.x来安装开发和引用的火花瓶spark-2.0.2-bin-hadoop2.7。然后导出创建的jar没有任何错误。我没有使用任何其他工具..如果我需要做不同的工作,你有任何相同的参考链接? – SuSri