我正在使用Spark Standalone集群模式,并使用"spark.driver.cores"
来设置驱动程序的核心数量。但是每次用户界面将其显示为“ 0”时,如图
即使在代码中设置此值
.set("spark.driver.cores","14")
似乎无效。在独立群集模式下应如何设置此值?
谢谢 === UPDATE === 这是spark-submit命令
spark-submit --jars "file:///<path to jar>" --master spark://$MASTER:7077 --conf "spark.cores.max=330"
--conf "spark.executor.core=5"
--conf "spark.sql.broadcastTimeout=10000000"
--conf "spark.sql.shuffle.partitions=1000"
--conf "spark.default.parallelism=1000"
--conf "spark.executor.memory=40g"
--conf "spark.driver.memory=40g"
--conf "spark.driver.extraJavaOptions=-XX:+UseCompressedOops -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps"
--conf "spark.driver.maxResultSize=40g"
--conf "spark.network.timeout=10000000"
--class "<my class>" "<path to jar>" <other parameters>....
集群中的每个节点都有24个核心和64GB内存。 我希望这有帮助。感谢您的帮助。
答案 0 :(得分:1)
`--conf "spark.executor.core=5"` is wrong
(应该是s)
--conf "spark.executor.cores=5"
第二件事是您没有将spark.driver.cores
设置为火花提交。
您的.set("spark.driver.cores","14")
应该像
val sparkConf = new SparkConf()
.set("spark.driver.cores", "2")
.setAppName(this.getClass.getSimpleName)
.setMaster("local[*]")
val spark: SparkSession = SparkSession.builder().config(sparkConf).appName(this.getClass.getName)
.master("local[*]").getOrCreate()
提示:要验证您正在应用什么配置:
spark.sparkContext.getConf.getAll.foreach(println)
将打印用于创建Spark会话的所有配置。
在上面的示例中:
(spark.app.name,com.examples.DataFrameCSVExample$)
(spark.app.id,local-1558579973832)
(spark.driver.cores,2)
(spark.master,local[*])
(spark.executor.id,driver)
(spark.driver.host,192.168.19.1)
(spark.driver.port,53962)
如果可以在此处看到,spark-ui应该显示相同的内容...
希望您能理解!