我使用scala的2.10.4版本构建了一个胖罐,但是它将运行在具有scala 2.11.1的Amazon的EMR上。
当我将jar(使用assembly
插件创建)复制到EMR集群并使用java -jar my.jar
运行时,我得到了预期的输出(scopt,命令行解析器,告诉我那里缺少参数)。
当我使用scala my.jar
运行它时,我得到同样的东西。如果我在主节点或从节点上运行jar,这是相同的。
但是,当我使用spark-submit my.jar
运行它时出现错误:
Exception in thread "main" java.lang.NoSuchMethodError: scopt.Read$.seqRead(Lscopt/Read;)Lscopt/Read;
因此,出于某种原因,使用spark-submit
,即使我通过了--master local
,也无法找到scopt。
我在这里缺少什么?
答案 0 :(得分:0)
我建议您从maven here下载scopt库,并使用spark-submit在外部添加jar。
示例:
spark-submit \
[your other options here] \
--jars $(echo ./jars/*.jar | tr ' ' ',') \
--target yourapp.jar
当然,jars
目录是您实际放置依赖项(库)的地方。