2015-09-17 86 views
4

我在本地框上以獨立模式運行Spark 1.4.1和Scala 2.11。 我有以下...Map上的NoSuchMethodError(Spark Scala類)

object Parser { 
    def main(args: Array[String]) { 
     if (args.length < 6) { 
      System.err.println("Usage: my.Parser <host> <input_loc> 
           <input_dt> <match_term> <out_loc><file_type>") 
      System.exit(1) 
     } 

     println(" *** Starting summariziation process *** ") 

     var host : String = args(0) 
     var inploc : String = args(1) 
     val inpdate : String = args(2) 
     val matchTerm : String = args(3) 
     val outloc : String = args(4) 
     val fileType : String = args(5) 

     println(" <------------------------------------------- debug ::0.0 ") 

     val typesMap = Map("data" -> "data", "rider" -> "mon", "sms" -> "sms", "voice" -> "rec", "voucher" -> "vou") 
     println(" typesMap - " + typesMap) 
     ......... 
    } 
} 

當我運行這段代碼通火花殼它工作得很好。但是,通過spark類提交作爲類對象,我會產生奇怪的行爲。我得到以下錯誤

*** Starting summariziation process *** 
<------------------------------------------------- debug ::0.0 
Exception in thread "main" java.lang.NoSuchMethodError: 
    scala.Predef$.ArrowAssoc(Ljava/lang/Object;)Ljava/lang/Object; 
    at my.Parser$.main(Parser.scala:138) 

我只想要一個簡單的查找來導出要處理的文件類型。

看來我創建一個Map的行會給出錯誤。我真的難以理解爲什麼它在spark-shell中起作用,並給spark-submit帶來錯誤。

有沒有人遇到過這個問題?有人可以建議我如何解決它? 非常感謝您的幫助!

回答

3

預構建的Apache Spark 1.4.1下載適用於Scala 2.10。如果你想使用Scala 2.11,你可以使用-Dscala-2.11來構建。請參閱文檔中的Building for Scala 2.11

+1

謝謝您的回覆。我將在IntelliJ中將我的Scala SDK更改爲2.10.x並嘗試重建。 奇怪的是,唯一的行錯誤是Map()行。如果我使用和if - else塊,整個解析器工作得很好.. –

0

由於丹尼爾達拉博斯說,要麼再次建立火花爲2.11或您可以簡單地降級scala到2.10

相關問題