如何获取当前作业中使用的核心数?

时间:2014-11-16 12:31:25

标签: scala apache-spark

SparkContextgetExecutorMemoryStatus方法。但它是Executor的内存状态。

有没有办法获得core身份?我使用Spark Standalone Cluster。

1 个答案:

答案 0 :(得分:1)

以下可能选项3是您正在寻找的那个..

  • 选项1 :Spark web ui为我提供了有关总核心和已用核心的信息。

enter image description here

  • 选项2 :默认值:

    sc.defaultParallelism通常设置为群集中的工作核心数

  • 选项3 :可以使用下面的ExectorInfo.totalCores并尝试...它应该有效。

docs说

  

public class ExecutorInfo extends Object   存储有关的信息    执行程序从调度程序传递到SparkListeners。

import org.apache.spark.scheduler.{SparkListener, SparkListenerExecutorAdded}

/**
  * Logs info of added executors.
  */
final class ExecutorLogger extends SparkListener {

  override def onExecutorAdded(executorAdded: SparkListenerExecutorAdded): Unit =
    println(s"\rExecutor ${executorAdded.executorId} added: ${executorAdded.executorInfo.executorHost} ${executorAdded.executorInfo.totalCores} cores")

}