Amazon Athenaは、Amazon S3内のデータを標準SQLで 直接分析できるクエリサービスです。Athenaは日本では「アテナ」と呼ばれることが多いですが、英語圏では「アティーナ」もしくは「アシーナ」と呼ばれます。Amazon Athenaはサーバーレスのサービスですので、大量なデータでも、特にデータベースなどを用意することなく標準SQLだけで分析や抽出が行えます。多くの場合、数秒で結果が出てきます。SQLを使って、大量のデータセットを迅速に、簡単に分析できるようになるのです。
Amazon Athenaの特徴
Amazon Athenaの特徴である、サーバーレス、クエリエンジン、クエリ実行に関する要件やサーバーレスデータ総合サービスであるAWS Glueとの統合、Amazon Athenaに向いている処理などを紹介します。
インフラの設定や管理は不要ですぐにクエリを開始
Amazon Athenaはサーバーレスのサービス、利用するためのサーバーといったインフラの配備をする必要はありません。設定、ソフトウェアの更新、障害などへの対処は不要、かつユーザー数増加に伴うインフラのスケーリングについても心配は不要です。
実際の作業は、Athenaコンソールにログインして、コンソールウィザードを使うかDDL(Data Definition Language、CREATE TABLE、ALTER TABLE、DROP TABLEなど)ステートメントを入力して、分析するデータベースのスキーマを定義します。その後は、コンソールに組み込まれたクエリエディタを使ってクエリを実施できます。数回のクリック、簡易な入力だけで、標準SQLによるクエリを開始できます。
Prestoでクエリを実行。CSV、JSON、ORC、Avro、Parquet もサポート
Amazon Athenaはクエリエンジンとして、オープンソースの分散SQLクエリエンジン「Presto」を利用しています。Prestoはクエリを並列実行することで、膨大な量のデータを効率的に照会できるツールで、ペタバイトクラスのデータソースに対応できます。データ形式は、CSV、JSON、ORC、Avro、Parquet など各種をサポートしています。
Amazon AthenaへのアクセスはAthenaコンソールから以外も、API、CLI、AWS SDK、SQLの開発アプリケーションからもクエリを実行できます。Amazon S3の他に、Hadoop、MySQLなどにも対応しています。
当社、NHNテコラスのお客様でAmazon Athena の活用により、分析基盤のコストを9割削減した事例の資料「AWSのデータ分析機能の使い方と成功事例」を用意しており、AWSの各種データ分析サービスについてもご紹介しています!
Amazon Athenaとセキュリティ
Amazon S3内データへのアクセス制限を設けることで、Amazon Athenaによるクエリの実行を制限することもできます。AWS IAMポリシー、アクセスコントロールリスト(ACL)、Amazon S3 バケットポリシーを利用すると、Amazon S3データへのアクセスを制御できます。
Amazon Athenaなら、Amazon S3の暗号化キーなどで暗号化されたデータに対してもクエリを実行できます。さらにAmazon Athenaは、AWS Key Management Service(KMS)を併用することで、クエリの実行結果を暗号化することもできます。
関連記事:Amazon S3(AWS S3)とは?メリットや豊富な機能、料金、使い方をわかりやすく解説
AWS Glueとの統合
Amazon Athenaの有効活用には、AWS Glueとの併用が推奨されています。AWS Glueとは、完全マネージド型のデータETL (Extract/Transform/Load、抽出/変換/ロード)サービスです。Amazon Athenaは整形されたデータしか扱えません。表組みなどで第1行をヘッダーにしている場合、そのままAmazon Athenaで分析を行うと1行目もデータとして扱ってしまいます。このような場合はAWS GlueのETLサービスで整形し、データカタログ化することで、Amazon Athenaで扱えるようになります。
他にもAWS Glueは、データソースを自動的にスキャンし、データ形式を特定してスキーマを推論するクローラーや、Amazon S3、ODBC、JDBC準拠のデータストアに保存されているデータベースとテーブルに関するメタデータ情報を保存するデータカタログなどの機能を有しており、Amazon AthenaとAWS Glueの併用にはたくさんのメリットがあります。
AWSのビッグデータ活用・機械学習導入支援サービス
設定不要で高いパフォーマンスを得られる
Amazon Athenaは、Amazon S3内にあるデータを、高速で分析できるように最適化されています。Amazon AthenaのクエリエンジンであるPrestoは、自動的にクエリを並列で実行できるので、大量のデータセットでもクエリ結果を数秒で表示することができます。
Amazon Athenaは、LZO 形式やGZIP 形式といった圧縮データもサポートしていますので、スキャンデータの量を少なくすることでパフォーマンスをアップできます。高速なパフォーマンスのための、クラスター管理やチューニングをどうするかといった心配は必要ありません。
Amazon Athenaに向いている処理
Amazon Athenaは多機能、高速なデータ分析ツールです。ただ分析用に設計および最適化されているクエリエンジンのPrestoを利用していることもあり、向いている処理と向いていない処理があることは留意した方が良いでしょう。なおAmazon Athenaは、発行したSQLクエリによってスキャンしたデータ容量に応じて利用料金が発生します。そのため概念実証(PoC)やプロトタイピングなどで、色々なパターンの分析を手早く試したいときは、Amazon Athenaがおすすめです。
しかしながら、Amazon Athenaは、リトライ機構がなくデータを絞って高速にスキャンする手法を利用するので、バッチ処理には向いていません。また分析処理においても、大量のデータを長時間処理する作業には向いていません。同じ手順の分析を定期的に実施する場合は、Amazon RedshiftやAmazon EMRといった他の手法のほうが、時間や料金などの点で優れている場合があります。
〇 Amazon Athena に向いている処理 | △ Amazon Athena に向いていない処理 |
---|---|
・新たに取得したデータに対して、 データウェアハウスに入れる価値があるか、ないかの検証
・利用頻度の低い過去のデータを使った、 BIツール経由の一時的な分析 ・Webサーバで障害が発生したときの、アクセスログによる原因追求 ・大規模ではないデータに対して、低頻度で実施するETL処理 |
・大規模なデータに対してフルスキャンを定期的に行う
・テンポラリテーブルを活用した多段のETL処理を行う ・サブクエリやJOINを駆使した複雑な集計を行う ・高頻度なレポーティングのための大量の分析を行う |
Amazon Athenaの料金
Amazon Athena の利用料金は、実行するクエリに対して発生します。それぞれのクエリでスキャンされるデータ量に基づいていて、東京リージョンの場合は、データ1TBあたり5.00USDです(2022/5現在)。バイト数はメガバイト単位で切り上げますので、10MB未満のクエリは10MBになります。DDLステートメント、パーティションを管理するステートメント、正常に実行されなかったクエリは課金されません。またクエリ実行の結果は、ディフォルトではAmazon S3のバケットに保存されますので、その際Amazon S3の利用料金が発生します。
AWSを活用したAI、機械学習の成功事例をご紹介!
〇データ分析基盤の運用費用9割削減
※Amazon Athena 活用事例
〇AIによるキャスト評価システムの構築
Amazon Athenaを使う
Amazon Athenaの使い方の概要を、データベース作成から紹介します。
データベースやテーブルを作成、クエリしてみる
以下にAmazon Athenaを使って、データベースを作る、テーブルを作る、クエリするといった簡易な作業の概要を紹介します。ここではタブ区切り(TSV)形式のデータを扱います。
1.データベースを作成する
Amazon Athenaのクエリ実行の結果を保存する場所を、Amazon S3に用意しておきます。その用意ができたら、Athenaでデータベースを作成します。
Athenaコンソールから、クエリエディタを開きます(初めてなら[Explore the query editor](クエリエディタを試す)をクリックします)。そこで以下2つの作業を実行します。
>[Location of query result](クエリ結果の場所):クエリ結果を保存する場所として、先にAmazon S3に用意した場所のパスを設定。
>データベースを設定するための、クエリとステートメントを入力し、実行する。CREATE DATABASE mydatabase と入力し、[Run](実行)をクリックし、mydatabase を設定。その後、 [Database](データベース)リストに、このmydatabaseを選択。
2.テーブルを作成する
クエリによって取得できるデータの、フォーマットを規定するテーブルを作成します。今回の分析したいデータはタブ区切り(TSV)形式のデータですので、テーブルでは、データの列を定義し、データを区切る方法を指定し、分析したデータが含まれるAmazon S3の場所を指定します。もし分析したいデータがCSVの場合は、クエリエディタでCSVを選択後、列名などを入力します。
3.データをクエリする
Amazon Athenaでテーブルを作成したら、次はこのテーブルに基づいてAmazon S3内のデータにSQLクエリを実行します。クエリタブを開きクエリペインに、必要なSQL ステートメントを入力し、[Run](実行)を選択します。
結果は、すぐにResulutウィンドウに表示されます。クエリ結果を、csv ファイルとして保存する場合は、[Download results](結果をダウンロード)をクリックして、名前をつけて保存してください。クエリの結果は、45 日間保持されますので、後からでもダウンロードすることができます。
4.クエリを保存する
クエリエディタで、作成・編集したクエリは個別に名前を付けて保存できます。保存されたクエリは、[Saved queries](保存されたクエリ)タブから呼び出すことができます。呼び出した後は、そのまま実行、名前を変える、削除することができます。
5.他のデータソースへの接続
今回の例では、Amazon S3にあるデータを利用しましたが、ODBCドライバー、JDBCドライバーやAthenaデータソースコネクタを使えば、Amazon Athenaをいろいろなデータソースに接続することもできます。たとえば、標準ODBC インターフェースを使って、Amazon AthenaのデータをMicrosoft AccessやExcel のようなアプリケーションと繋ぐことも可能です。
横串検索
Amazon S3以外のデータでも、Amazon Athenaを活用することができます。Amazon Athenaには、Amazon DynamoDB、Amazon Redshift、MySQL、PostgreSQL、Redisや、その他の一般的なサードパーティーデータストア向けのコネクタが用意されていて、これらのコネクタを使えば、Amazon Athenaで複数データベースにをまたいだ横串検索を行えます。横串検索なら、複数のデータソースにあるデータをクエリしたり、抽出したデータをAmazon S3に保存するパイプラインを構築できます。Amazon Athenaの横串検索は、リレーショナル、非リレーショナル、オブジェクト、カスタムデータソースに保存されているデータの全体に対して、SQLクエリを実行することができます。
機械学習への応用
Amazon Athenaは、Amazon SageMaker(機械学習モデルを高速に開発、学習、デプロイできるモジュールが用意されているフルマネージド型サービス)を使って、Machine Learning(ML)推論を行えるSQLステートメントを実行することができます。このため、データ分析用のML推論モデルへのアクセスが容易になり、複雑なプログラミングなしでもML推論を実行できます。異常検出、売上予想といった複雑なタスクでも、SQLクエリを記述するだけで実践できるわけです。
AWSでのデータ分析基盤の構築・運用はNHNテコラスにお任せください
データは存在するだけでは意味がありません。Amazon Athenaなどで分析、処理することで始めて輝き、役に立ちます。AWSプレミアティア サービスパートナーである当社、NHNテコラスではAmazon Athenaの活用をサポートする AWSのビッグデータ活用・機械学習導入支援サービスの用意がありますので、お気軽にご相談ください。AWSのスペシャリストが、Amazon Athenaによる所有データの分析基盤の構築や運用に対して適切なサポートを提供します。貴社の所有しているデータを有効活用できれば、DXの大きな一歩にも繋がるはずです。