【问题标题】:How to determine the number of executors to read a delta table?如何确定读取增量表的执行器数量?
【发布时间】:2022-08-17 00:51:50
【问题描述】:

我有一个由多个键分区的增量表,其中一个键包括日期,不包括分钟详细信息(仅最多小时,例如 - 2022 年 7 月 15 日 07 日星期五)

现在,随着数据通过批处理和流式摄取工作流程不断摄取,评估执行器数量以从增量表中读取所有数据的最佳策略是什么?

一种非常幼稚的方法可能是让 spark 自动缩放,但我们可能仍然需要使用随机分区等。寻找相同的提示或最佳实践。谢谢!

  • 这非常特定于您的用例。尝试使用不同配置集并找出最适合您的要求的最佳方法,这也将帮助您为设置(数据大小、集群设置等)建立基准

标签: delta-lake


【解决方案1】:

如果你想“从增量表中读取所有数据”该表是否分区并不重要,因为查询会读取所有数据并因此加载整个表。


这是最糟糕的查询 -害怕全扫描。如果这是不可避免的,只要知道这就是 Spark SQL 利用 Spark 集群的全部功能大放异彩的查询。你已经被警告了:)


执行程序只是具有 CPU 内核和内存的机器。您可能对加载增量表的所有任务的 CPU 内核数更感兴趣。

我将从给定版本的 delta 表的文件数开始计算。文件大小不同,而且(我在这里可能错了)它们通常是分块的(我不想使用重载术语分区的在这里,但这就是我想到的)到 512MB 的拆分。

给定版本的增量表的所有文件的拆分数(512MB 块)将是任务数。这将为您提供 CPU 内核的数量以及它们的“容器”,即 Spark 执行器(以使可用物理资源均匀饱和以获得最佳性能)。

【讨论】:

  • 这些都是很好的见解。非常感谢 :)
猜你喜欢
  • 2023-01-19
  • 1970-01-01
  • 2016-07-20
  • 2023-01-10
  • 1970-01-01
  • 1970-01-01
  • 2022-12-23
  • 2019-08-22
  • 1970-01-01
相关资源
最近更新 更多