如何向 Spark 提交 Scala 作业?
How to submit a Scala job to Spark?
我有一个 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!")
}
}
我做错了什么?
对于初学者,您必须创建一个 jar 文件。您不能简单地提交 Scala 源代码。如有疑问,请参阅 Getting Started with sbt.
之后只需添加一个指向HelloWorld
的class
参数。假设没有包裹:
/opt/spark/bin/spark-submit --master yarn-client --class "HelloWorld" path_to.jar
这取决于您使用的集群模式。
看看通用命令
./bin/spark-submit \
--class <main-class>
--master <master-url> \
--deploy-mode <deploy-mode> \
--conf <key>=<value> \
... # other options
<application-jar> \
[application-arguments]
对于yarn-client,
/opt/spark/bin/spark-submit \
--class "HelloWorld" your_jar_with_scala_file \
--master yarn-client
查看 Spark documentation 以获得更好的理解。
我有一个 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!")
}
}
我做错了什么?
对于初学者,您必须创建一个 jar 文件。您不能简单地提交 Scala 源代码。如有疑问,请参阅 Getting Started with sbt.
之后只需添加一个指向HelloWorld
的class
参数。假设没有包裹:
/opt/spark/bin/spark-submit --master yarn-client --class "HelloWorld" path_to.jar
这取决于您使用的集群模式。
看看通用命令
./bin/spark-submit \
--class <main-class>
--master <master-url> \
--deploy-mode <deploy-mode> \
--conf <key>=<value> \
... # other options
<application-jar> \
[application-arguments]
对于yarn-client,
/opt/spark/bin/spark-submit \
--class "HelloWorld" your_jar_with_scala_file \
--master yarn-client
查看 Spark documentation 以获得更好的理解。