如何解决Spark 创建的用于从 S3 读取输入表的任务
我试图了解 Spark 为从 S3
读取输入表而产生的任务数量。 Spark 如何计算从 S3 读取表所需的分区数?
注意:我已经在网上搜索了这个,但找不到具体的答案。所以请不要禁用这个问题。如果这已经在其他地方讨论过,那么请指出我的方向。
我正在尝试从 S3
读取一个表 (20 MB) 并执行一个简单的查询。 “客户”表的基础文件驻留在 S3
上,并分布在 3
上的 S3
个文件中。例如-
2021-04-22 08:25:49 101102532 part-00000-2e9e15c47-1b5a-46d2-9d12--07779ea50c14-c000
2021-04-22 08:25:50 208974016 part-00001-2e9e15c47-1b5a-46d2-9d12--07779ea50c14-c000
2021-04-22 08:25:51 101966695 part-00002-2e9e15c47-1b5a-46d2-9d12--07779ea50c14-c000
查询很简单-
select
cust_id,count(*) as cnt
from customers
group by cust_id
having count(*) > 1
现在,在 Spark UI 中,它显示创建了 3 个任务来读取上面的输入“客户”表。
同样,我还有另一个大表(总共 6 GB),它分布在存储在 S3
(如下所示)上的 50 个文件,并在Spark UI 显示需要60 个任务来读取此输入。
产品表(仅显示了 50 个拆分中的 2 个)-
2021-04-22 08:25:49 102102542 part-00000-3b9e15c47-5b5a-47e2-9d12--07899ea30c34-c000
2021-04-22 08:26:50 208374517 part-00001-3b9e15c47-5b5a-47e2-9d12--07899ea30c34-c000
..... upto 00049
-
Spark 集群:
节点数 = 5
核心数 = 8/节点
因此,我的问题是 Spark 如何计算从 S3 读取输入表所需的任务数?在实际将工作提交给 Spark 之前,是否有任何公式/方程可以让我预先估计自己的任务数量?
我使用 Spark sql 2.4
谢谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。