我正在优化我的管道的性能,当我为我的 Transform 作业打开 Job Tracker 时,我注意到在作业开始时有几个阶段,称为ExecuteStats.scala
. 有没有办法通过删除/跳过这些来优化我的工作?它们通常需要数十秒,并且在我每次运行转换时都会发生。
1 回答
0
此阶段类型在您的文件尚未计算统计信息时执行,即如果您已摄取非镶木地板(或更一般地说,文件具有汇总统计信息)文件。
假设您.csv
通过数据连接或在 Foundry UI 中手动上传文件。当你这样做时,你应用了一个模式,Spark 能够读取文件并在其上运行计算。 但是, Spark 需要了解文件内容的值分布,以便估计连接策略、AQE 优化和其他相关事情。因此,在您能够运行任何计算之前,每个.csv
文件都会执行一个阶段来计算这些统计信息。
这意味着每次您对这些非镶木地板文件运行下游转换时,它都会重新运行统计信息。您可以想象Spark 在运行较大的作业时重新运行阶段的趋势如何意味着这个统计问题被放大了。
.csv
相反,您可以在执行 a并写出单个 parquet 文件的文件之后立即注入一个步骤select * repartition(1)
(如果这是适合您.csv
大小的文件数量),Foundry 将计算一次内容的统计信息。然后,您的下游转换应该使用这个新输入而不是.csv
,您会看到该ExecuteStats.scala
命令不再运行。
于 2022-01-20T15:43:20.163 回答