以独立方式运行spark应用程序与spark提交/ spark启动器之间的区别?

时间:2019-02-18 10:17:39

标签: scala apache-spark spark-submit spark-launcher

我正在探索打包spark应用程序的不同选项,我感到困惑的是,最佳模式是什么,以下模式之间有什么区别?

  1. 将spark应用程序的jar提交给spark-submit
  2. 从spark gradle项目中构建一个胖jar,然后将jar作为独立的Java应用程序运行。

我已经尝试过两种方法,但是我的要求是将spark应用程序打包到docker容器中,运行胖子罐对我来说很容易,但是作为一个新手,我不知道如果遇到这种限制我使用胖子罐方法(撇开胖子罐可能会长大)

请让我们知道您的输入内容

是否可以以编程方式设置包括驱动程序和执行程序在内的spark集群?

val conf = new SparkConf()
conf.setMaster("local")
conf.set("deploy-mode", "client")
conf.set("spark.executor.instances", "2")
conf.set("spark.driver.bindAddress", "127.0.0.1")
conf.setAppName("local-spark-kafka-consumer")
val sparkSession = SparkSession
  .builder()
  .master("local[*]")
  .config(conf)
  .appName("Spark SQL data sources example")
  .getOrCreate()

val sc = sparkSession.sparkContext

val ssc = new StreamingContext(sparkSession.sparkContext, Seconds(5))
val kafkaParams = Map[String, Object](
    "bootstrap.servers" -> "localhost:9092,localhost:9093",
    "key.deserializer" -> classOf[LongDeserializer],
    "value.deserializer" -> classOf[StringDeserializer],
    "group.id" -> "consumerGroup10",
    "auto.offset.reset" -> "earliest",
    "max.poll.records" -> "1",
    "enable.auto.commit" -> (false: java.lang.Boolean))

val topics = Array("topic1")
val stream = KafkaUtils.createDirectStream[String, String](...)
ssc.start()
ssc.awaitTermination()
} catch {
  case e: Exception => println(e)
}

1 个答案:

答案 0 :(得分:0)

使用 fat jar 部署 Spark 作业是一种古老甚至古老的做法。你可以做到这一点,相信我 :) 小心你在里面写的东西。