问题描述
我试图了解 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 (将#修改为@)