Я изучаю различные варианты упаковки приложения Spark, и меня смущает, какой режим является лучшим и в чем различия между следующими режимами?
- Отправка банку приложения Spark в spark-submit
- Создайте толстую банку из проекта spark gradle и запустите банку как отдельное java-приложение.
Я испробовал оба способа, но мое требование - упаковать искровое приложение в докерконтейнер с жидкой банкой выглядит легко для меня, но, как новичок, я не имею ни малейшего представления об ограничениях, с которыми я могу столкнуться, если я пойду с подходом жирной банки (оставляя в стороне жирную банку, может увеличиться в размере)
Не могли бы вы сообщить нам ваши входные данные
Можно ли программно настроить спарк-кластер, включая драйвер и исполнителей?
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)
}