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・オンプレミスとの比較
AWS の優位点
- サーバーレスで事前のクラスター構築が不要であり、スキャンしたデータ量 1TB あたり約 5 USD の明快な従量課金で即座にクエリを実行できる
- S3 上のデータをそのまま分析でき、ETL 処理やデータ移動が不要なため、データレイク分析の初期コストと運用負荷を大幅に削減できる
- AWS Glue データカタログとの統合により、スキーマの自動検出とメタデータ管理が容易に行える
注意点
- スキャンしたデータ量に応じて課金されるため、パーティション分割や列指向フォーマットの活用でコストを最適化すること
- 大量のデータに対する複雑なクエリは実行時間が長くなる場合がある。定期的な分析には Redshift の方が適している場合もある
- クエリ結果は S3 に保存されるため、結果の保存先バケットのストレージコストにも注意すること
さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。