如何向Spark提交Scala作业?

时间:2016-01-08 11:34:58

标签: scala apache-spark yarn

我有一个Pythons脚本,我可以通过以下方式提交给Spark:

/opt/spark/bin/spark-submit --master yarn-client test.py

现在,我尝试以相同的方式提交Scala程序:

/opt/spark/bin/spark-submit --master yarn-client test.scala

结果我收到以下错误消息:

Error: Cannot load main class from JAR file:/home/myname/spark/test.scala
Run with --help for usage help or --verbose for debug output

Scala程序本身只是一个Hello World程序:

object HelloWorld {
    def main(args: Array[String]): Unit = {
        println("Hello, world!")
    }
}

我做错了什么?

2 个答案:

答案 0 :(得分:7)

对于初学者,您必须创建一个jar文件。您不能简单地提交Scala源代码。如有疑问,请参阅Getting Started with sbt

之后只需添加指向class的{​​{1}}参数即可。假设没有包裹:

HelloWorld

答案 1 :(得分:5)

这取决于您使用的群集模式。

查看通用命令

./bin/spark-submit \
  --class <main-class>
  --master <master-url> \
  --deploy-mode <deploy-mode> \
  --conf <key>=<value> \
  ... # other options
  <application-jar> \
  [application-arguments]

对于纱线客户,

/opt/spark/bin/spark-submit \
  --class "HelloWorld" your_jar_with_scala_file \
  --master yarn-client

了解Spark documentation以便更好地理解。