奇怪的 Parquet 写入瓶颈

Weird Parquet Write Bottleneck

我对 spark 有点陌生。在我的 spark calc 完成后,我目前正在向 amazon s3 写入一些非常慢的镶木地板。

写一个小文件用了1.8小时(写的时候有2个分区)

我 运行 相同的 spark calc 具有不同的 LARGER 文件(更多行 + 更多列)(写入时有 3 个分区)

写入调用本身:df.write.mode("overwrite").parquet(key)

我试着查看了 SQL 计划,它们看起来没有任何不同。即使缓慢是由文件差异引起的,我也不希望一个 <1min 而另一个 >1.5h。

对于我的慢速文件,我取出了 parquet 写入,总计算时间从 2.6 小时 -> 1 小时,所以我不认为它在最后执行延迟评估导致它变慢。

你们对调查什么有什么建议吗?我尝试查看 DAG 和历史服务器的 SQL 选项卡,但没有看到任何突出的内容。执行者的数量是一样的。主要差异我看到更大更快的文件在编写 parquet 时有 3 个任务,但每个任务处理的行和字节比较小的慢文件更多。

相信问题是我没有意识到它在进行惰性评估。