Amazon S3内のデータを標準SQLで分析するAmazon Athenaとは
はじめに
Amazon Athenaは、Amazon S3内のデータを標準SQLを使用し、直接的な分析を簡易化するインタラクティブなクエリサービスです。本記事では、Amazon Athenaの特徴、他のAmazonサービスとの連携と、2020年8月6日時点ではプレビューですが、フェデレーティッド・クエリについて紹介します。
Amazon Athenaの特徴
ここでは、Amazon Athenaの7つの特徴を紹介します。
1. サーバレス
Amazon Athenaはサーバレスで、インフラストラクチャの管理が不要です。設定やソフトウェアの更新、障害、またはデータセットやユーザー数の拡大によるインフラストラクチャのスケーリングは、Amazon Athenaが自動で管理します。
2. すぐに利用開始できる
クエリを開始するまでの手順は次の2つだけです。
- Amazon Athenaコンソールにログイン
- コンソールウィザードかDDLによってスキーマの定義
Amazon Athenaでは、分析用データを準備する必要がありません。複雑なETLジョブが不要で、Amazon S3内にあるユーザーの全てのデータを利用し、すばやく、簡単に分析することができます。
3. クエリが容易で幅広いサポート
Amazon Athenaには、ANSI SQLに準拠したPrestroが使用されています。
Prestroは、低レイテンシでアドホックなデータ分析用に最適化された、オープンソースの分散SQLクエリエンジンです。ANSI SQLは、大規模な結合、ウィンドウ関数、配列を完全にサポートしているので、Amazon S3内の大規模なデータセットに対してクエリを実行することができます。また、PrestroはAmazon S3のような非RDBだけでなく、MySQLをはじめとするRDBもサポートしています。
Amazon Athenaでは、CSV、JSON、ORC、Parquet、Avroなどのさまざまな標準データフォーマットに対応しています。
4. クエリごとの料金
Amazon Athenaでは、実行するクエリに対してのみ労金が発生します。クエリごとにスキャンされたデータの分量に基づいて料金(5 USD / TB)が請求されます。データの圧縮、分割、列形式への変換を行うと、Amazon Athenaでクエリの実行によりスキャンされるデータ量が減少するため、クエリに対するコストの削減と、パフォーマンスの向上が可能です。
Amazon Athenaでは、Amazon S3にあるデータのクエリが直接実行されます。そのため、基本的にはAmazon S3以外の追加のストレージ料金は発生しません。
5. 自動で並列の実行
Amazon Athenaでは、クエリが自動的に並列で実行されます。そのため大きなデータセットに対してもAmazon Athenaを使用すると、高速でインタラクティブなパフォーマンスを維持することができます。
6. 高い可用性と耐久性
Amazon Athenaは可用性が高く、多くの施設や多くの施設のデバイスから、コンピューティングリソースを使用してクエリを実行できます。そのため、特定の施設に到達できない場合は自動的に、クエリが適切にルーティングされます。また、Amazon Athenaの基盤のデータストアであるAmazon S3は、データの可用性や耐久性に優れます。データは冗長化され、複数の施設に保存され、各施設の複数のデバイスに保存されます。
7. セキュア
Amazon Athenaでは、
AWS IAMポリシー、アクセスコントロールリスト、Amazon S3 バケットポリシー
を使用して、データへのアクセスを制御できます。
AWS IAMポリシーにより、Amazon S3バケットに対する制御を細かくAWS IAMユーザーに付与できます。Amazon S3内のデータへのアクセス制御をすることで、Amazon Athenaを使用してクエリを実行するユーザーを制限できます。
Amazon Athenaを使用すると、Amazon S3内の暗号化されたデータをクエリし、Amazon S3バケットに暗号化の結果を簡単に書き込むことができます。暗号化については、サーバ側とクライアント側の両方でサポートされています。
他のAmazonサービスとの連携
AWS Glue
AWS Glueは、フルマネージド型ETLサービスです。AWS Glueクローラーは、データセットからDBとテーブルスキーマを自動的に推論し、関連するメタデータをAWS Glueデータカタログに格納します。
Amazon Athenaは、AWS Glueデータカタログに登録されたデータセットおよびデータソースのクエリをネイティブにサポートしています。AWS Glueデータカタログを使用すると、さまざまなサービスにわたり、データの統合リポジトリを作成し、データソースをクロールしてデータを検索できます。また、新規や修正済みのテーブルやパーティションの定義をAWS Glueデータカタログに格納し、スキーマのバージョニングを維持できるようになります。
AWS Glueの統合は、コスト面でも利点があります。AWS Glueのフルマネージド型ETL機能によって、データ変換や列指向の形式への変更を実行することで、クエリパフォーマンスの改善によるコストの削減が期待できます。
Amazon QuickSight
Amazon QuickSightは、視覚化の構築、アドホック分析の実行、データからビジネス上のインサイトの取得に使用できるビジネス分析サービスです。
Amazon AthenaとAmazon QuickSightの統合により、データを簡単に可視化することができます。
Amazon SageMaker
Amazon SageMakerは、機械学習モデルを迅速に構築、トレーニング、デプロイできるようにするフルマネージド型サービスです。
Amazon Athenaでは、SQLクエリから直接、Amazon SageMakerの機械学習モデルを呼び出し、推論を実行することができます。これによって、異常検出やユーザーの動向を分析するカスタマーコホート分析、売上予想などの本来複雑なタスクが容易になります。
※こちらは2020年8月6日時点ではプレビューです。
フェデレーティッド・クエリ
※こちらは2020年8月6日時点ではプレビューです。
フェデレーティッド・クエリは、RDB、非RDB、オブジェクトデータ、カスタムデータソースに保存されているデータに対してSQLクエリを実行する機能です。Amazon Athenaのフェデレーティッド・クエリは、AWS Lambdaで動作するAthena データソースコネクタを使用して実行され、単一のSQLクエリの発行でオンプレミスやクラウド上で稼働する複数のデータソースに対して、データ分析を行うことが可能です。
例えば、各々異なるデータが下記へ保存・保管されている場合を想定します。
Apache HBase、Redis、Amazon DocumentDB、Amazon Aurora、Amazon CloudWatch Logs、Amazon Redshift、Amazon DynamoDB
フェデレーティッド・クエリを実行する準備として、まずAWS Lambdaからアクセス可能なデータソースにAmazon Athenaから接続するために、Athenaのデータソースコネクタの登録を行います。(Athena Query Federation SDKを使用することで、任意のデータソースへのコネクタを構築することができます。)
これらのコネクタを使用すると、前述の複数のデータソースに対して結合するといったフェデレーティッド・クエリを実行することができます。また、Amazon Athenaでは、クエリ内で指定したAmazon S3バケットに全てのクエリ結果が保存されます。
まとめ
本記事では、Amazon Athenaの特徴や他のサービスとの連携、フェデレーティッド・クエリについて紹介しました。Amazon Athenaは操作が簡単な上に、Amazon S3内のデータを標準SQLを使用して容易に分析できるサービスです。