地图上的 NoSuchMethodError(Spark Scala 类)

Posted

技术标签:

【中文标题】地图上的 NoSuchMethodError(Spark Scala 类)【英文标题】:NoSuchMethodError on a Map (Spark Scala class) 【发布时间】:2015-09-17 21:35:35 【问题描述】:

我在本地机器上以独立模式运行 Spark 1.4.1 和 Scala 2.11。 我有以下...

 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-shell 运行此代码时,它工作得很好。但是,通过 spark-submit 作为类对象运行它,我得到了奇怪的行为。我收到以下错误

 *** 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)

我只想要一个简单的查找来派生要处理的文件类型。

似乎我创建地图的那一行给出了错误。我真的很困惑为什么它在 spark-shell 中工作并在 spark-submit 中出错。

有人遇到过这个问题吗?有人可以建议我如何解决它吗? 提前感谢您的帮助!

【问题讨论】:

【参考方案1】:

预构建的 Apache Spark 1.4.1 下载适用于 Scala 2.10。如果你想使用 Scala 2.11,你可以使用-Dscala-2.11 构建。请参阅文档中的Building for Scala 2.11。

【讨论】:

感谢您的回复。我会将 IntelliJ 中的 Scala SDK 更改为 2.10.x 并尝试重建。奇怪的是,唯一的行错误是 Map() 行。如果我使用 and if - else 块,整个解析器工作得很好..【参考方案2】:

正如 Daniel Darabos 所说,要么为 2.11 再次构建 spark,要么您可以简单地将 scala 降级到 2.10

【讨论】:

以上是关于地图上的 NoSuchMethodError(Spark Scala 类)的主要内容,如果未能解决你的问题,请参考以下文章

NoSuchMethodError:null 上的无效成员:'length'

NoSuchMethodError:null 上的无效成员:'_get'

NoSuchMethodError:nul 上的无效成员:“_set”

Apache Beam,BigQueryIO.WriteTableRows() 上的 NoSuchMethodError?

LocationAwareLogger 上的 SLF4J NoSuchMethodError

ExecutionStrategy 构造方法上的异常 java.lang.NoSuchMethodError