Athena の「HIVE_CANNOT_OPEN_SPLIT: Error opening Hive split s3://awsdoc-example-bucket/: Slow Down (Service: Amazon S3; Status Code: 503; Error Code: 503 Slow Down;」というエラーの解決方法を教えてください。
最終更新日: 2020 年 7 月 14 日
Amazon Athena クエリが次のようなエラーで失敗します。
「HIVE_CANNOT_OPEN_SPLIT: Error opening Hive split s3://awsdoc-example-bucket/date=2020-05-29/ingest_date=2020-04-25/part-00000.snappy.parquet (offset=0, length=18614): Slow Down (Service: Amazon S3; Status Code: 503; Error Code: 503 Slow Down;」
簡単な説明
このエラーは通常、多数のオブジェクトがある Amazon Simple Storage Service (Amazon S3) バケットプレフィックスをクエリするときに発生します。S3 バケットのプレフィックスごとに 1 秒あたり 3,500 回の PUT/COPY/POST/DELETE リクエストと 5,500 回の GET/HEAD リクエスト を送信できます。バケット内に持つことができるプレフィックスの数に制限はありません。
解決方法
以下のいずれかの方法を使用して、リクエストのスロットリングを防止します。
- オブジェクトとリクエストを複数のプレフィックスに分散します。詳細については、データのパーティション分割を参照してください。
- Amazon S3 リクエストの数を減らすには、ファイル数を減らします。例えば、S3DistCp ツールを使用して、多数の小さなファイル (128 MB 未満) を少数の大きなファイルにマージします。詳細については、Top 10 performance tuning tips for Amazon Athena の 4.Optimize file sizes を参照してください。
注意: S3DistCp は Parquet ファイルの連結をサポートしていません。代わりに PySpark を使用します。詳細については、Amazon EMR で Parquet 形式ファイルを連結するにはどうすればよいですか? を参照してください。 - Amazon CloudWatch 5xxErrors メトリクスと Amazon S3 サーバーアクセスログを使用して、Athena クエリが失敗したときに他のアプリケーションまたは AWS のサービスが同じプレフィックスを使用しているかどうかを確認します。スロットリングを回避するには、Athena データソースとアプリケーションデータソースに異なる Amazon S3 プレフィックスを使用します。