def updateSparkTaskCpus(sc: SparkContext, cpusPerTask: Int) = {
val _taskScheduler = sc.getClass.getDeclaredField("_taskScheduler")
_taskScheduler.setAccessible(true)
val taskSchedulerImpl = _taskScheduler.get(sc)
val taskCpus: Field = Class.forName("org.apache.spark.scheduler.TaskSchedulerImpl").getDeclaredField("CPUS_PER_TASK")
taskCpus.setAccessible(true)
val modifiers: Field = taskCpus.getClass.getDeclaredField("modifiers")
modifiers.setAccessible(true)
modifiers.setInt(taskCpus, taskCpus.getModifiers() & ~Modifier.FINAL);
taskCpus.set(taskSchedulerImpl, cpusPerTask)
}
spark 修改task占用cpu核数
于 2023-01-13 16:02:28 首次发布