如何通过ssh在hadoop中运行spark scala应用程序?
我有一个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
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文件的位置