AWS re:Postを使用することにより、以下に同意したことになります AWS re:Post 利用規約

Amazon Athena で実行に時間がかかりすぎたり、タイムアウトしたりする MSCK REPAIR TABLE コマンドを解決するにはどうすればよいですか?

所要時間1分
0

Amazon Athena で実行に時間がかかりすぎたり、タイムアウトしたりする MSCK REPAIR TABLE コマンドを解決したいと考えています。

簡単な説明

MSCK REPAIR TABLE コマンドを実行すると、Athena は Amazon Simple Storage Service (Amazon S3) のプレフィックスとオブジェクトを一覧表示します。Amazon S3 プレフィックスまたはオブジェクトが多すぎると、コマンドの実行に時間がかかる、またはエラーが発生してタイムアウトする場合があります。

この問題を解決するには、以下のいずれかを実行します。

  • Athena でパーティションプロジェクションを使用します。
  • AWS Glue クローラーを使用して、Athena テーブルにパーティションを追加します。
  • Athena DDL ステートメントを使用してパーティションをロードする

解決策

Athena でパーティションプロジェクションを使用する

Athena でパーティションプロジェクションを使用して、メモリ内にパーティションを生成します。パーティションを AWS Glue データカタログに追加したり、データカタログから取得したりする必要はありません。Athena は、多数のパーティションリストをスキャンするのではなく、テーブルの値を計算します。また、パーティションプロジェクションは、AWS Glue データカタログなどのリポジトリからではなく、設定から値と場所を計算します。

AWS Glue クローラーを使用して Athena テーブルにパーティションを追加する

AWS Glue クローラーを使用して Athena テーブルにパーティションを追加するには、次の手順を実行します。

  1. AWS Glue コンソールを開きます。
  2. ナビゲーションペインで クローラークローラーを作成の順に選択します。
  3. クローラーの名前を作成し、次へを選択します。
  4. データソースと分類子の選択データソースの設定で、**データは既に Glue テーブルにマップされていますか?**で、はいを選択します。
  5. Glue テーブルで、テーブルの追加を選択し、必要なデータベースとテーブルを選択します。次へを選択します。
  6. AWS Glue の IAM ロールを選択または作成します次へを選択します。
  7. 出力とスケジュールの設定で、詳細オプションを展開し、以下を選択します。
    変更を無視し、データカタログのテーブルを更新しないでください。
    すべての新規パーティションと既存パーティションをテーブルのメタデータで更新します。
    変更を無視し、データカタログのテーブルを更新しないでください。
  8. 次へクローラーの作成の順に選択して、クローラー設定を保存します。
  9. クローラーを実行を選択します。クローラーを実行すると、パーティションがテーブルにロードされます。

詳細については、クローラーの仕組みAWS Glue に新しいパーティションを追加するための増分クロールを参照してください。

Athena DDL ステートメントを使用してパーティションをロードする

Athena DDL ステートメントを使用してパーティションをロードするには、次の手順を実行します。

  1. Amazon Athena コンソールを開きます。
  2. クエリエディタタブで、ALTER TABLE ADD PARTITION コマンドを実行してパーティションをロードします。

関連情報

Athena クエリの実行に時間がかかるのはなぜですか?

AWS Glue ETL ジョブからデータカタログでのテーブルの作成、スキーマの更新、新しいパーティションの追加

AWS Glue の料金

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