奇怪的 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 个任务,但每个任务处理的行和字节比较小的慢文件更多。
相信问题是我没有意识到它在进行惰性评估。
我对 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 个任务,但每个任务处理的行和字节比较小的慢文件更多。
相信问题是我没有意识到它在进行惰性评估。