我写了一个HelloWorld spark应用程序。该文件如下所示:
object HelloWorld{
def main(args: Array[String]){
println("HelloWorld")
}
}
但它只是一个文件。我想从bash终端运行它,而不是从spark-shell运行它。我想用crontab做一个预定的任务。我怎样才能让它发挥作用?
答案 0 :(得分:1)
您可以使用以下命令运行spark应用程序。
./bin/spark-submit \
--class <main-class>
--master <master-url> \
--deploy-mode <deploy-mode> \
--conf <key>=<value> \
... # other options
<application-jar> \
[application-arguments]
简单示例:
spark-submit --class WordCount MyJarFile.jar fileURL
答案 1 :(得分:1)
如果你在 Scala 文件中定义了一个对象,例如file.scala
喜欢
//file.scala
import org.apache.spark.sql._
object App{
def main(args: Array[String]): Unit = {
val spark = (
SparkSession
.builder
.getOrCreate()
)
import spark.implicits._
println("Hello world")
}
}
您可以使用以下命令在 spark-shell 中运行它:
spark-shell
scala> :load file.scala
scala> App.main(Array())
或者,您可以将其作为脚本运行:
//build.sbt
name := "app"
version :="0.0.1"
scalaVersion := "2.11.12"
val sparkVersion = "2.4.7"
libraryDependencies ++= Seq(
"org.apache.spark" %% "spark-sql" % sparkVersion % "provided"
)
并用
编译它sbt clean package
然后用
运行脚本spark-submit --class App target/scala-2.11/app_2.11-0.0.1.jar
答案 2 :(得分:0)
您编写的程序是纯scala对象。您可以轻松地从bash运行它:
scalac program.scala
scala HelloWorld
或者如果您编写了一个spark程序,那么您可以使用下面给出的命令从bash运行它,但请记住您需要为它调用驱动程序类:
spark-shell -i program.scala