如何解析 Athena 中的“HIVE_CANNOT_OPEN_SPLIT:打开 Hive 拆分 s3://awsdoc-example-bucket/ 时出错:速度下降(服务:Amazon S3;状态代码:503;错误代码:503 速度下降;”错误?
上次更新时间:2020 年 7 月 14 日
我的 Amazon Athena 查询失败,错误如下:
“HIVE_CANNOT_OPEN_SPLIT:打开 Hive 拆分 s3://awsdoc-example-bucket/date=2020-05-29/ingest_date=2020-04-25/part-00000.snappy.parquet (offset=0, length=18614) 时出错:速度下降(服务:Amazon S3;状态代码:503;错误代码:503 速度下降;”
简短描述
导致这种错误的原因通常是由于您查询的 Amazon Simple Storage Service (Amazon S3) 存储桶前缀拥有大量的对象。您每秒可以在 S3 存储桶中为每个前缀发送 3500 个 PUT/COPY/POST/DELETE 和 5500 个 GET/HEAD 请求。您的存储桶中可以拥有的前缀数量没有限制。
解决方法
使用以下方法之一防止发生请求限制:
- 在多个前缀之间分配对象和请求。有关更多信息,请参阅对数据进行分区。
- 为了减少 Amazon S3 请求的数量,请减少文件的数量。例如,使用 S3DistCp 工具将大量小文件(小于 128 MB)合并成少量大文件。有关更多信息,请参阅 Amazon Athena 的前 10 大性能优化提示 并回顾 4.优化文件大小部分。
注意:S3DistCp 不支持串联 Parquet 文件。因此应使用 PySpark。有关更多信息,请参阅在 Amazon EMR 中如何串联 Parquet 文件? - 使用 Amazon CloudWatch 5xxErrors 指标和 Amazon S3 服务器访问日志了解在 Athena 查询失败时是否有其他应用程序或 AWS 服务正在使用相同前缀。为了避免限制,请对 Athena 数据源和应用程序数据源使用不同的 Amazon S3 前缀。