2014-12-24 85 views
-2

我遇到下面當我試圖做一個火花提交:在Apache的火花not_so_familiar例外/斯卡拉

Exception in thread "main" java.lang.NullPointerException 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.apache.spark.deploy.SparkSubmit$.launch(SparkSubmit.scala:328) 
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:75) 
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala) 

這是一個已知的問題?

感謝和問候,

下面的程序是能夠重現上述錯誤消息:

import org.apache.spark.SparkContext 
import org.apache.spark.SparkConf 

class anomaly_model(val inputfile: String, val clusterNum: Int, val maxIterations: Int, val epsilon: Double, val scenarioNum: Int, val outputfile: String){ 
    val conf = new SparkConf().setAppName("Anomaly Model") 
    val sc = new SparkContext(conf) 
    val data = sc.textFile(inputfile) 

def main(args: Array[String]) { 

    val inputfile = "sqlexpt.txt" 
    val clusterNum = 5 
    val maxIterations = 1000 
    val epsilon = 0.001 
    val scenarioNum = 10 
    val outputfile = "output.csv" 
    val am = new anomaly_model(inputfile, clusterNum, maxIterations, epsilon, scenarioNum, outputfile) 

    } 
} 
+1

您需要提供更多的信息,最好用一個最小的例子來說明問題。從堆棧跟蹤中猜測幾乎是不可能的 –

回答

0

您的變量中的一個空值,因爲有消息稱。

1

可能是我在定義類內的主要方法時犯的錯誤...我應該在伴侶對象中定義它(我來自Java背景!)。

1

如果要將主類放在anomaly_model類中,則可能需要將「class」更改爲「object」。是的,如果你想讓anomaly_model成爲一個類,你可能需要將main方法放在另一個對象中。

在anomaly_model類:

import org.apache.spark.SparkContext 
import org.apache.spark.SparkConf 

class anomaly_model(val inputfile: String, val clusterNum: Int, val maxIterations: Int, val epsilon: Double, val scenarioNum: Int, val outputfile: String){ 
    val conf = new SparkConf().setAppName("Anomaly Model") 
    val sc = new SparkContext(conf) 
    val data = sc.textFile(inputfile) 
} 

而且在Main.scala:

import anomaly_model 

object Main { 
    def main(args: Array[String]) : Unit{ 
     val inputfile = "sqlexpt.txt" 
     val clusterNum = 5 
     val maxIterations = 1000 
     val epsilon = 0.001 
     val scenarioNum = 10 
     val outputfile = "output.csv" 
     val am = new anomaly_model(inputfile, clusterNum, maxIterations, epsilon, scenarioNum, outputfile) 
    } 
} 
0

我有同樣的問題,並作出了同樣的錯誤,因爲你。 anomaly_model應該是一個object而不是一個class