gpt4 book ai didi

multithreading - Spark : understanding partitioning - cores

转载 作者:行者123 更新时间:2023-12-04 06:47:48 24 4
gpt4 key购买 nike

我想了解 Spark 中的分区。
我在 Windows 10 上以本地模式运行 spark。
我的笔记本电脑有 2 个物理内核和 4 个逻辑内核。

1/术语:对我来说,spark 中的一个核心 = 一个线程。所以 Spark 中的内核与物理内核不同,对吗? Spark 核心与任务相关联,对吗?
如果是这样,由于您需要一个线程用于分区,如果我的 sparksql 数据帧有 4 个分区,则它需要 4 个线程,对吗?

2/如果我有 4 个逻辑核心,是否意味着我只能在我的笔记本电脑上同时运行 4 个并发线程?所以 4 在 Spark 中?

3/设置分区数:如何选择我的数据帧的分区数,以便尽可能快地运行进一步的转换和操作?
- 因为我的笔记本电脑有 4 个逻辑核心,所以它应该有 4 个分区吗?
- 分区数是与物理核相关还是与逻辑核相关?
- 在 spark 文档中,写到每个 CPU 需要 2-3 个任务。既然我有两个物理内核,那么分区的 nb 应该等于 4 或 6 吗?

(我知道分区数对本地模式不会有太大影响,但这只是为了理解)

最佳答案

  • 没有“ Spark 芯”这样的东西。如果您指的是像 --executor-cores 这样的选项那么是的,这指的是每个执行程序将同时运行多少个任务。
  • 您可以将并发任务的数量设置为您想要的任何数量,但超过您拥有的逻辑核心数量可能不会提供优势。
  • 要使用的分区数量视情况而定。在不知道您正在执行的数据或转换的情况下,很难给出一个数字。典型的建议是使用略低于总核心数的倍数。例如,如果您有 16 个核心,则可能 47、79、127 以及略低于 16 倍数的类似数字都可以使用。这样做的原因是您希望确保所有内核都在工作(尽可能少的时间让您有资源空闲,等待其他人完成)。但是你留下了一些额外的东西以允许推测执行(如果它运行缓慢,spark可能会决定运行相同的任务两次,看看它是否会在第二次尝试时运行得更快)。

  • 不过,选择数字需要反复试验,利用 spark 作业服务器来监控任务的运行方式。有多个记录的任务很少意味着您可能应该增加分区的数量,另一方面,许多只有几个记录的分区也很糟糕,在这些情况下您应该尝试减少分区。

    关于multithreading - Spark : understanding partitioning - cores,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46992060/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com