显示Spark + Parquet程序中读取的字节数

问题描述 投票:0回答:1

我正在尝试通过利用分区和下推等优点来优化一些Spark查询和Parquet架构。我的理解是这些技术允许跳过大部分Parquet文件。

有没有办法显示Spark读取的字节数与Parquet文件的总大小?另外,读取操作的次数是多少? (我正在使用S3,所以我想减少由于S3 API调用开销导致的读取操作次数。)

apache-spark query-optimization parquet
1个回答
0
投票

如果您使用的是apache spark(而不是EMR的私有变体),则S3A连接器会收集lot of stats,包括:关闭连接时丢弃的字节,#HEAD请求,限制操作等等

但是:它并没有真正收集到spark中,并且因为每个s3存储桶的文件系统类的一个实例(因此统计数据)被用于每个工作者,即使你确定如何收集它们,它们往往会高估它们的数量。努力。有机会改善那里的事情,但需要做很多工作。您目前获得的是每线程字节读取,字节写入的统计信息,如果HTTP请求上传数据是在后台线程中完成的,那么它实际上可以低于报告的字节数。

您可以启用org.apache.hadoop.fs.s3a.S3AStorageStatistics来记录调试,然后每个spark worker的日志将实际跟踪这些操作,但它非常嘈杂。在尝试调试事物或对Parquet阅读器本身进行低级性能优化时非常有用。

不知道EMR我害怕 - 不是我的代码。

© www.soinside.com 2019 - 2024. All rights reserved.