【发布时间】:2016-05-31 11:54:44
【问题描述】:
在我的 mapPartition 部分,有多线程工作要做,我使用线程池并希望并行运行一个任务。但是我无法区分这两个参数。 我想我可以将 --executor-cores 设置为 5,并在我的任务中运行 4 个线程。是这样吗?
【问题讨论】:
标签: multithreading apache-spark
在我的 mapPartition 部分,有多线程工作要做,我使用线程池并希望并行运行一个任务。但是我无法区分这两个参数。 我想我可以将 --executor-cores 设置为 5,并在我的任务中运行 4 个线程。是这样吗?
【问题讨论】:
标签: multithreading apache-spark
spark.task.cpus 是为每个任务分配的核心数,--executor-cores 指定每个执行程序的核心数。
正如here 解释的那样,执行程序和任务之间存在细微差别。
要了解每个核心可以运行多少个线程,请查看this 帖子。
根据链接:
当您创建 SparkContext 时,每个工作人员都会启动一个执行程序。这是一个单独的进程 (JVM)。执行程序连接回您的驱动程序。现在驱动程序可以向它们发送命令,例如 flatMap、map 和 reduceByKey,这些命令就是任务。
要了解您的 CPU 支持的每个核心运行的线程数 lscpu
并检查Thread(s) per core: 的值。
【讨论】:
spark.task.cpus 的 cli 参数是什么?