代码之家  ›  专栏  ›  技术社区  ›  Roman

如何向Spark提交Scala作业?

  •  6
  • Roman  · 技术社区  · 10 年前

    我有一个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 回复  |  直到 10 年前
        1
  •  8
  •   zero323    10 年前

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

    之后,只需添加一个 class 指向 HelloWorld 。假设没有包:

    /opt/spark/bin/spark-submit --master yarn-client --class "HelloWorld" path_to.jar
    
        2
  •  4
  •   Ravindra babu    10 年前

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

    查看通用命令

    ./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 以便更好地理解。

    推荐文章