Spark:如何从spark shell运行spark文件

Ram*_*hna 53 scala cloudera-manager apache-spark cloudera-cdh


我正在使用CDH 5.2.我可以使用spark-shell来运行命令.

  1. 如何运行包含spark命令的文件(file.spark).
  2. 有没有办法在没有sbt的情况下在CDH 5.2中运行/编译scala程序?

提前致谢

小智 126

在命令行中,您可以使用

spark-shell -i file.scala
Run Code Online (Sandbox Code Playgroud)

运行写入的代码 file.scala

  • 谢谢,因为这不是'spark shell -h` (9认同)
  • 我已经尝试过该命令,但它没有运行文件中的代码而是启动了scala shell (5认同)
  • @AlexRajKaliamoorthy我可能会迟到.只是想帮助你的评论/问题.它确实执行但是你需要将System.exit(0)包含在脚本的末尾才能退出spark-shell (5认同)
  • 在 Scala 文件中,如果你定义了一个 Object SparkTest{...} 你需要像上面提到的那样调用 main SparkTest.main(args = Array()) 和 System.exit(0) 。 (2认同)

Ste*_*eve 93

要从spark-shell加载外部文件,请执行此操作

:load PATH_TO_FILE
Run Code Online (Sandbox Code Playgroud)

这将调用文件中的所有内容.

我对你的SBT问题没有解决方案,但抱歉:-)

  • 嗨,如果我在本地机器上有一个文件,这个命令就可以工作,但是是否可以将此位置称为 hdfs 路径。即:加载 hdfs://localhost:9000/file (2认同)

jav*_*dba 12

您可以使用sbt或maven来编译spark程序.只需将spark作为依赖添加到maven

<repository>
      <id>Spark repository</id>
      <url>http://www.sparkjava.com/nexus/content/repositories/spark/</url>
</repository>
Run Code Online (Sandbox Code Playgroud)

然后依赖:

<dependency>
      <groupId>spark</groupId>
      <artifactId>spark</artifactId>
      <version>1.2.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

在使用spark命令运行文件方面:您可以简单地执行此操作:

echo"
   import org.apache.spark.sql.*
   ssc = new SQLContext(sc)
   ssc.sql("select * from mytable").collect
" > spark.input
Run Code Online (Sandbox Code Playgroud)

现在运行命令脚本:

cat spark.input | spark-shell
Run Code Online (Sandbox Code Playgroud)

  • 对一个看似有用的答案进行贬低至少值得你解释一下. (2认同)

Phu*_*Ngo 9

spark-shell version 1.6.3在和上进行了测试spark2-shell version 2.3.0.2.6.5.179-4,您可以直接通过管道连接到 shell 的标准输入,例如

spark-shell <<< "1+1"
Run Code Online (Sandbox Code Playgroud)

或者在您的用例中,

spark-shell < file.spark
Run Code Online (Sandbox Code Playgroud)


lon*_*tar 7

只是为了给出更多的答案

Spark-shell是一个scala repl

您可以键入:help以查看scala shell中可能的操作列表

scala> :help
All commands can be abbreviated, e.g., :he instead of :help.
:edit <id>|<line>        edit history
:help [command]          print this summary or command-specific help
:history [num]           show the history (optional num is commands to show)
:h? <string>             search the history
:imports [name name ...] show import history, identifying sources of names
:implicits [-v]          show the implicits in scope
:javap <path|class>      disassemble a file or class name
:line <id>|<line>        place line(s) at the end of history
:load <path>             interpret lines in a file
:paste [-raw] [path]     enter paste mode or paste a file
:power                   enable power user mode
:quit                    exit the interpreter
:replay [options]        reset the repl and replay all previous commands
:require <path>          add a jar to the classpath
:reset [options]         reset the repl to its initial state, forgetting all session entries
:save <path>             save replayable session to a file
:sh <command line>       run a shell command (result is implicitly => List[String])
:settings <options>      update compiler options, if possible; see reset
:silent                  disable/enable automatic printing of results
:type [-v] <expr>        display the type of an expression without evaluating it
:kind [-v] <expr>        display the kind of expression's type
:warnings                show the suppressed warnings from the most recent line which had any
Run Code Online (Sandbox Code Playgroud)

:加载文件中的解释行