能用spark-shell运行.scala文件吗?shell和submit有什么区别?

Tony_JIN

赞同来自: fish yanglei

spark-shell will call spark-submit, and spark-submit will call spark-class.  如果你要用spark-shell测试你写的代码,你需要先打包你的项目,然后测试你的class functions:
# Package your project
$ sbt assembly or sbt package

# run spark shell with your codes
$ spark-shell --master local[2] --executor-memory 6g --jars target/scala-2.10/your-project.jar

# enjoy testing your funcs
> import cn.chinahadoop.test
> ...

fish - Hadooper

赞同来自:

功能方面,spark-shell为命令行方式执行spark,这个命令就是启动一个可给用户输入spark命令的shell。 spark-submit是个让用户提交任务的脚本,功能类似hadoop中的hadoop jar。 spark-shell脚本在spark的bin目录下,查看之后可以发现,spark-shell中就调用了spark-submit,来完成其功能。   至于问题中的“是否运行.scala文件”,这是个应该澄清的概念问题。.scala只是源代码,执行的实际过程应该是将.scala编译成字节码(.class文件),再由Java虚拟机进行执行。(这个跟.java文件是一样的)   spark-submit实际最终调用的是bin/spark-class,查看该脚本,可以看到它最终调用的是java -cp xxxx。 这个方式跟hadoop的脚本启动原理相同。   总的说,就是,scala定义类实现,编译成字节码,然后用Java虚拟机执行。

要回复问题请先登录注册