Athena で「クエリタイムアウト」エラーを解決する方法を教えてください。

所要時間1分
0

Amazon Athena でクエリを実行したところ、「クエリタイムアウト」というエラーメッセージが表示されて失敗しました。

簡単な説明

DML クエリのタイムアウト制限を超えると、クエリのタイムアウトエラーや、実行が遅いクエリが発生する場合があります。

解決策

タイムアウトエラーを回避するには、以下のベストプラクティスに従ってクエリを最適化します。

Athena からクエリを実行する時間を短縮する

クエリの実行時間を短縮するために Athena で実行できる手順を次に示します。

Amazon Athena のクエリ実行時間を増やす

Athena から Amazon QuickSight SPICE にデータをインポートすると、DML クエリが最大実行時間に達したことが原因で、クエリタイムアウトエラーが発生することがあります。

この問題の解決策を次に示します。

  1. Athena のクエリ履歴を確認して、QuickSight が生成したクエリを特定します。
  2. エラーが発生するまでのクエリ実行期間を確認します。
  3. 前のセクション「Athena からクエリを実行する時間を短縮する」の手順に従い、クエリを再実行します。これでクエリの問題が解決しない場合は、手順 4 に進みます。
  4. 時間が DML クエリタイムアウトクォータの最大値 (分単位) に近い場合は、サービスクォータを増やします。

サービスクォータの詳細とクォータの引き上げをリクエストする方法については、「サービスクォータ」を参照してください。

Athena クエリタイムアウトの通知を設定する

タイムアウトして失敗したクエリの通知を受け取るには、Amazon CloudWatch イベントルールを使用してイベントをキャプチャします。次に、Amazon Simple Notification Service (Amazon SNS) を使用して通知を設定します。

手順については、「Athena クエリタイムアウトの通知を生成する方法を教えてください」を参照してください。

Amazon S3 アクセスログのクエリ

Amazon Simple Storage Service (Amazon S3) アクセスログのクエリを実行していて、クエリがタイムアウトした場合は、S3 データを分割します。AWS Glue ETL ジョブを使用して Amazon S3 データをパーティション分割します。次に、限られたパーティションで Athena クエリを実行します。

手順については、「パーティション化された Amazon S3 アクセスログを使用して Athena クエリのタイムアウトを防ぐ方法を教えてください」を参照してください。

CloudTrail データのクエリ

Athena を使用して AWS CloudTrail データをクエリする場合に、クエリの実行に時間がかかったり、タイムアウトしたりすることがあります。これは、CloudTrail テーブルを分割してクエリの実行時間を短縮した場合でも、CloudTrail ログのサイズが時間の経過とともに大きくなる可能性があるためです。

パーティションプロジェクションを使用して CloudTrail テーブルを手動で作成します。これにより、Athena は CloudTrail テーブルの値を動的に計算できるため、クエリの実行時間を短縮できます。パーティションプロジェクションでは、パーティションの値と場所は設定を元に計算されるため、パーティションを管理する必要はありません。

手順については、「パーティションプロジェクションを使用して Athena クエリを行うために、CloudTrail テーブルを作成する方法を教えてください」を参照してください。

CTAS クエリを使用する

A CREATE TABLE AS SELECT (CTAS) クエリは、別のクエリでの SELECT ステートメントの結果から、Athena に新しいテーブルを作成します。CTAS はクエリ結果からテーブルを 1 ステップで作成するため、未処理のデータセットでの作業が簡単になります。また、CTAS クエリではクエリのパフォーマンスが向上するため、クエリコストを削減できます。

例については、「CTAS クエリの例」を参照してください。

詳細については、「Athena で CTAS クエリを実行するときにファイルの数またはサイズを設定する方法を教えてください」を参照してください。

EXPLAIN および EXPLAIN ANALYZE ステートメントを使用する

Athena で複雑なクエリを行うには、EXPLAIN および EXPLAIN ANALYZE を使用します。EXPLAIN ステートメントを使用すると、SQL ステートメントを精緻化することでクエリを最適化し、パーティションプルーニングを検証できます。

EXPLAIN および EXPLAIN ANALYZE ステートメントに関する考慮事項と制限事項を必ず確認してください。

詳細については、「EXPLAIN ステートメントの例」を参照してください。

関連情報

Amazon Athena のパフォーマンスチューニングに関するトップ 10 ヒント

Amazon Athena でのクエリの結果を別のクエリで使用する方法を教えてください

AWS公式
AWS公式更新しました 1年前