1

我使用 Eclipse -> New Scala Project 在 scala 中编写了一个简单的应用程序。

我正在使用 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)
 }
}

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

[cloudera@quickstart ~]$ 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)

我是 spark 和 scala 的新手,所以不确定我错过了什么。

4

1 回答 1

0

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

首先尝试这样,您可以使用它的工作,您可以添加命令行参数

于 2017-08-29T07:58:02.593 回答