gpt4 book ai didi

apache-spark - 相同大小但行长度不同的 Spark 读取性能差异

转载 作者:行者123 更新时间:2023-12-05 04:09:06 25 4
gpt4 key购买 nike

我正在使用 spark sql 读取 S3 中 ORC 格式的 2 个不同数据集。但是对于几乎相似大小的数据集,读取的性能差异是巨大的。

数据集 1:包含 212,000,000 条记录,每条记录有 50 列,总计 15GB,在 s3 存储桶中采用 orc 格式。

数据集 2:包含 29,000,000 条记录,每条记录有 150 列,总计 15GB,在同一 s3 存储桶中采用 orc 格式。

使用 spark sql 读取数据集 1 需要 2 分钟。在相同的基础设施中使用相同的 Spark 读取/计数作业读取数据集 2 需要 12 分钟

每行的长度可能会造成如此大的差异。任何人都可以帮助我理解读取这些数据集时巨大性能差异背后的原因吗?

最佳答案

假设您使用的是 s3a: 客户端(而不是 Amazon EMR & 它是 s3://客户端)它是关于正在进行多少 seek() 工作以及客户端是否对随机 IO 很聪明。本质上:如果您必须关闭一个 HTTP 连接并创建一个新连接,则 seek() 比 HTTP1.1 GET 的开销更大。 Hadoop 2.8+ 为此添加了两个功能:HADOOP-14244 :懒惰寻找,和HADOOP-13203 .高性能随机IO。

如果您的类路径中有 Hadoop 2.8.+ JAR,请转到:

spark.hadoop.fs.s3a.experimental.input.fadvise random

这会损害非随机 IO 的性能(读取 .gz 文件等),但对 ORC/Parquet IO 性能至关重要。

如果您使用的是 Amazon EMR,他们的 s3 客户端是闭源的,恐怕请与他们的支持团队联系。

关于apache-spark - 相同大小但行长度不同的 Spark 读取性能差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46581239/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com