eclipse写的spark,不打jar包,如何提交到spark集群?

windows平台下,用eclipse每次写好spark代码后都要打jar包,然后发给Linux,然后spark-submit ...,一次下来就一两分钟,我感觉这样太麻烦了,尤其是写一句程序就调试一下的我,这基本不可能,想问问学过spark的前辈们,有没有办法,eclipse写好了spark程序,点下run就能自动提交到集群的?给个思路就行。我知道hadoop的hdfs和MapReduce都能实现这样的自动提交

可以本地调试,以本地模式运行。

首先保证maven项目中的spark的相关以来已经引用:

org.apache.spark
spark-core_2.11
2.3.0

1、代码中提供有main方法
2、设置spark的master为local[1]或者local[*]

3、如果有spark master也可以指定master为 spark://192.168.1.120:7077【此处为你的master节点】
代码如下:

import scala.math.random

import org.apache.spark.sql.SparkSession

/** Computes an approximation to pi /
object SparkPi {
def main(args: Array[String]) {
val spark = SparkSession
.builder
.appName("Spark Pi").master("local[
]")
.getOrCreate()
val slices = if (args.length > 0) args(0).toInt else 2
val n = math.min(100000L * slices, Int.MaxValue).toInt // avoid overflow
val count = spark.sparkContext.parallelize(1 until n, slices).map { i =>
val x = random * 2 - 1
val y = random * 2 - 1
if (x*x + y*y <= 1) 1 else 0
}.reduce(_ + _)
println(s"Pi is roughly ${4.0 * count / (n - 1)}")
spark.stop()
}
}

 package demo

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

object WordCount extends App {
  //第一种获取SparkContext的方法:需要打jar包
//  val conf = new SparkConf().setAppName("WordCount")
//  .setMaster("spark://master:7077")
//  .set("spark.driver.host", "win")
//  .set("spark.executor.memory", "512M")
//  .setJars(List("target/spark.jar"))
//  val sc1=new SparkContext(conf) 

  //第二种获取SparkContext的方法:不需要打jar包
  val session=SparkSession.builder
  .appName("WordCount")
  .master("spark://master:7077")
  .config("spark.driver.host", "win")
  .config("spark.executor.memory", "512M")
  .getOrCreate
  val sc2=session.sparkContext

  val result=sc2.textFile("hdfs://master:9000/user/dsf/spark/hello.txt")
  .flatMap(x=>x.split(" "))
  .map(x=>(x,1))
  .reduceByKey(_+_)
  .collect

  result.foreach(println)

  session.close()
}

我一般都是local模式跑通了再上集群