首页 > 解决方案 > Spark SQL 执行中核心的使用

问题描述

我是 Spark SQL 查询的新手,并试图了解它在幕后工作。

我在 Spark 词汇表中遇到过“核心”一词,但仍然难以抓住它。

我知道 - 1 core = 1 task

我的问题-

请指教。

标签: apache-spark-sql

解决方案


是的,你在某种程度上是对的。在 Spark 中,任务分布在多个 executor 上,每个 executor 上运行的任务数等于该 executor 上的核心数。所以基本上核心是要执行你的任务的东西。这里的任务是需要执行的最细粒度的工作。

工作=>阶段=>任务

是的,spark UI 会向您显示当前在每个执行程序上运行的任务的数量。您可以在 Executors 选项卡下查看它们。此选项卡向您显示任务分配与可用内核数量和许多其他详细信息的非常详细的视图。

是的,您可以增加核心数量。您可以通过在 spark-submit 命令中传递参数来做到这一点。

--executor-cores n 这里 n 是你想要的核心数。为了获得最佳使用效果,它应该是 5。

您的作业运行速度不必超过内核数量。您的任务需要在所有可用的内核上平均分配以更快地运行。如果您提供的内核数量超过所需数量,它们大部分时间都将保持空闲状态。


推荐阅读