如何通过ssh在hadoop中运行spark scala应用程序?

如何通过ssh在hadoop中运行spark scala应用程序?,scala,apache-spark,Scala,Apache Spark,我有一个scala应用程序对象 object SparkApp extends App { Runner.run(new SparkConf().setAppName("test_scala")) } object Runner { def run(conf: SparkConf): Unit = { val spark = SparkSession .builder() .config(conf) .getOrCreat

我有一个scala应用程序对象

object SparkApp extends App {
  Runner.run(new SparkConf().setAppName("test_scala"))
}

object Runner {
  def run(conf: SparkConf): Unit = {
    val spark = SparkSession
      .builder()
      .config(conf)
      .getOrCreate()
    import spark.implicits._

    val table1 = spark.table("table1")
    val table2 = spark.table("table2")
    val result = table1.join(table2, table1.col("id") === table2.col("id_2"))
    result.write.saveAsTable("test_scala")
  }
}
如何在hadoop中运行此程序?我通过ssh连接到群集并尝试:

spark submit--class com.my.org.project.SparkApp--主纱线--部署模式群集--驱动程序内存500M--执行器内存500M

但我有:错误:缺少应用程序资源


哪里有问题?

只有在我们测试逻辑时,代码才能使用
应用程序运行。看看下面对代码的重写,您可以重新构建并运行它

import org.apache.spark.SparkConf
import org.apache.spark.sql.SparkSession

object SparkApp{

  def main(args:Array[String]): Unit = {

    val conf = new SparkConf()
    val spark = SparkSession
      .builder()
      .config(conf)
      .getOrCreate()

    val table1 = spark.table("table1")
    val table2 = spark.table("table2")
    val result = table1.join(table2, table1.col("id") === table2.col("id_2"))
    result.write.saveAsTable("test_scala")
  }
}
更新Spark提交:


spark submit--class com.my.org.project.SparkApp--master warn--deploy mode cluster--driver memory 500M--executor memory 500M spark_application.jar

请粘贴错误堆栈跟踪,而不是消息。这有助于人们更好地识别问题,希望得到回复,但没有帮助。现在,我在stacktrace中遇到了相同的错误(错误:缺少应用程序资源),它包含spark submit函数的参数stacktrace:Usage:spark submit[options][app arguments]Usage:spark submit--kill[submission ID]--master[spark://...]用法:spark submit--状态[提交ID]--主[spark://...]用法:spark提交运行示例[options]示例类[example args]选项:…Hi petrov。在spark submit命令末尾,您没有提到JAR文件的位置