2016-05-31 57 views
1

在我的mapPartition部分,有多線程工作要做,我使用線程池並且想要並行運行一個任務。但我無法區分這兩個參數。 我想我可以設置--executor-cores爲5,我在我的任務中運行4個線程。這是正確的嗎?spark.task.cpus和--executor-cores有什麼區別

回答

2

spark.task.cpus是爲每個任務分配的內核數量,--executor-cores指定每個執行程序的內核數量。

執行者和任務之間的差別很小,如解釋here所述。

要知道每個核心可以運行多少個線程,請通過this後。

按鏈接:

當您創建SparkContext,每個工人開始執行人。這是一個單獨的過程(JVM)。執行程序連接到您的驅動程序。現在驅動程序可以向它們發送命令,如flatMap,map和reduceByKey,這些命令是任務。

要知道您的CPU支持每個核心運行的線程數lscpu 和檢查值Thread(s) per core:

+0

我設置了** spark.task.cpus **,** - executor-cores **,** - num-executors **,我希望得到** - executor-cores ** * ** - num-executors **核心。但是集羣信息顯示我錯了。 – cstur4

+0

您如何獲取羣集信息?您是否對SPARK_WORKER_CORES和SPARK_EXECUTOR_CORES感到困惑? –