我在本地盒子上以独立模式运行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)
我想要的只是一个简单的查找来派生要处理的文件类型。
我创建Map的行似乎给出了错误。我真的很难过为什么它在spark-shell中运行并且在spark-submit中给出了错误。
有没有人遇到过这个问题?有人可以建议我如何解决它吗? 提前感谢您的帮助!
答案 0 :(得分:3)
预构建的Apache Spark 1.4.1下载适用于Scala 2.10。如果您想使用Scala 2.11,可以使用-Dscala-2.11
进行构建。请参阅文档中的Building for Scala 2.11。
答案 1 :(得分:0)
正如丹尼尔达拉波斯所说,要么再次为2.11建立火花,要么你可以简单地将斯卡拉降级为2.10