使用spark-submit的类路径错误

时间:2015-03-06 12:12:18

标签: scala apache-spark

我使用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。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

我建议您从maven here下载scopt库,并使用spark-submit在外部添加jar。

示例:

spark-submit \
    [your other options here] \
    --jars $(echo ./jars/*.jar | tr ' ' ',') \
    --target yourapp.jar

当然,jars目录是您实际放置依赖项(库)的地方。