Amazon Athena のアイコン

Amazon Athena

S3 上のデータを SQL で直接分析できるサーバーレスクエリサービス

何ができるか

Amazon Athena は、S3 に保存されたデータに対して標準的な SQL を使って直接クエリ (問い合わせ) を実行できるサーバーレスの分析サービスです。データベースサーバーの構築やデータの移動が不要で、S3 にあるデータをそのまま分析できます。CSV、JSON、Parquet、ORC など多様なデータ形式に対応しており、スキャンしたデータ量に応じた従量課金です。

どのような場面で使うか

S3 に蓄積されたログファイルの分析、CloudTrail の監査ログの調査、アクセスログからのトレンド分析、データレイクに保存されたビジネスデータの集計、アドホック (その場限りの) データ分析など、S3 上のデータを手軽に分析したい場面で利用されています。 この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。

身近な例え

図書館の蔵書検索システムに例えるとわかりやすいでしょう。膨大な蔵書 (S3 のデータ) を別の場所に移動させなくても、検索端末 (Athena) から条件を入力するだけで、必要な情報を瞬時に見つけ出せます。検索した分だけ利用料がかかり、検索端末の維持費は不要です。

Athena とは

Amazon Athena は、S3 をデータソースとするサーバーレスのインタラクティブクエリサービスです。内部的には Apache Presto (Trino) エンジンを使用しており、大規模なデータセットに対しても高速にクエリを実行できます。サーバーのプロビジョニングや管理が一切不要で、SQL を書いて実行するだけでデータ分析を始められます。

主な特徴

Athena の最大の魅力は、既に S3 に保存されているデータをそのまま分析できる点です。ETL (抽出・変換・ロード) 処理でデータを別のデータベースに移す必要がありません。料金はスキャンしたデータ量に対してのみ発生し、1TB あたり 5 USD 程度です。データを Parquet や ORC などの列指向フォーマットに変換し、パーティション分割を行えば、スキャン量を大幅に削減してコストと速度を最適化できます。

データカタログとの連携

Athena は AWS Glue データカタログと連携して、S3 上のデータのスキーマ (構造) を管理します。Glue クローラーを使えば、S3 のデータを自動的にスキャンしてテーブル定義を作成できます。一度テーブルを定義すれば、通常のデータベースと同じように SELECT 文でデータを検索できます。

はじめかた

Athena を使い始めるには、Athena コンソールでクエリエディタを開きます。まず、クエリ結果の保存先となる S3 バケットを設定します。次に、CREATE TABLE 文で S3 上のデータの場所とスキーマを定義します。テーブルが作成されたら、SELECT 文でデータを検索できます。AWS マネジメントコンソールから直接クエリを実行でき、結果は CSV としてダウンロードすることも可能です。

Azure・オンプレミスとの比較

Azure の対応サービス Azure Synapse Analytics (サーバーレス SQL)
オンプレミスでの対応手段 Presto, Apache Hive

AWS の優位点

  • サーバーレスで事前のクラスター構築が不要であり、スキャンしたデータ量 1TB あたり約 5 USD の明快な従量課金で即座にクエリを実行できる
  • S3 上のデータをそのまま分析でき、ETL 処理やデータ移動が不要なため、データレイク分析の初期コストと運用負荷を大幅に削減できる
  • AWS Glue データカタログとの統合により、スキーマの自動検出とメタデータ管理が容易に行える

注意点

  • スキャンしたデータ量に応じて課金されるため、パーティション分割や列指向フォーマットの活用でコストを最適化すること
  • 大量のデータに対する複雑なクエリは実行時間が長くなる場合がある。定期的な分析には Redshift の方が適している場合もある
  • クエリ結果は S3 に保存されるため、結果の保存先バケットのストレージコストにも注意すること

さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。