2020/12/17

AWSサービス「Amazon Athena」とは?Athenaの特徴や使用方法を紹介!

 
  

AWSサービス「Amazon Athena」の概要

AWS(Amazon Web Services)からはデータ分析に関するサービスが数多く提供されています。データ分析の流れとしては、「データの蓄積」→「データの加工」→「データの分析」→「データの可視化」というのが一般的です。 この流れの各フェーズで活用できるサービスがAWSから提供されています。中でも「データの分析」のフェーズでは、「Amazon Athena」「Amazon EMR」「Amazon Redshift」といったサービスがあります。 こちらの記事では、「Amazon Athena」のサービスについて取り上げ、その特徴や利用方法等を解説していきます。

AWSサービス「Amazon Athena」とは?

「Amazon Athena」とは、「データ分析」ができるAWS(Amazon Web Services)のサービスの一つです。 分析対象となるデータとしては、「Amazon S3(※AWS上で利用可能なクラウド型のストレージサービス)」上のデータで、CSV形式やJSON形式等のファイルが一般的です。 具体的な分析方法としては、「Amazon S3」等に対して、標準SQL のクエリ(※データベース管理システムに対する問合せ)を実行します。この実行結果を参照しながらデータ分析を進めていきます。

「Amazon Athena」の特徴

「Amazon Athena」の特徴について説明してきます。 (1)大規模データでも高速なデータ分析 一般的には、大規模データをデータ分析で扱うと、サーバ等に大きな処理負荷が掛かるため、分析結果の取得までに時間が掛かります。「Amazon Athena」では高速に分析結果を取得することが可能です。 さらに「Amazon S3」上のデータ構成やSQLクエリの記述を工夫することで、より高速にSQLクエリを実行することが可能になります。 注意点としては、CSVファイルやJSONファイルといった「整形済み」のデータであることが前提です。 (2)ディスク使用量の低減 従来のデータ分析では、最初に大規模データをデータベースに格納し、そのデータベースに対してSQLクエリを実行する、という形式が通常でした。そのため、元データとデータベースで同じ内容のデータを二重に保存するといったディスク容量の余分な消費が課題でした。 「Amazon Athena」では、「Amazon S3」に直接SQLクエリを実行することが可能です。そのため二重のデータ保存が不要なのでコスト削減につながります。なお「Amazon S3」ではデータを出力する際に課金されます。 (3)「サーバレス」なデータ分析 SQLクエリを発行するために、「Amazon Elastic Compute Cloud(EC2)」といったサーバインスタンスを立てる必要がありません(いわゆる「サーバレス」です)。 AWSコンソール上で、SQLクエリを登録して直接実行することが可能です。そのためデータ分析用のサーバ機器等の用意が不要となります。 (4)使用したデータ分だけの従量課金 SQLクエリで実行した際にスキャンしたデータのみが課金対象となります。つまり、使用したデータのみについて課金されるため余分な料金を払わずにすみます。 (5)BI ツールと連携 JDBC(※Java Database Connectivityの略で、Javaで開発したアプリケーションからデータベースを操作するためのAPI)等を経由して、各種BIツールと連携することが可能です。 AWSで提供しているBIツールとして「Amazon QuickSight」があり、「Amazon Athena」との連携もスムーズにできるようになっています。

「Amazon Athena」の使用方法

これまでも述べてきましたが、このサービスを単独で利用するというよりも他のAWSサービスやツールと組み合わせるアーキテクチャとするのが一般的です。 「Amazon Athena」の基本的な使用方法と、その具体的な利用例を説明していきます。

「Amazon Athena」の基本的な使用方法

「Amazon Athena」の基本的な使用方法は、次のとおりです。 (1)分析対象のデータを「Amazon S3」に保存する (2)テーブルを定義する (3)SQLクエリを実行する それぞれについて詳しくみていきましょう。

(1)分析対象のデータを「Amazon S3」に保存する

最初に「S3 バケット」と呼ばれる、パソコンでの「フォルダ」に当たるものを「Amazon S3」に作成しておきます。 AWSのコンソール画面を操作して、この「S3 バケット」に分析対象のデータファイルをアップロードします。これによりデータが「Amazon S3」に保存されます。 上記のAWSのコンソール画面で操作する方法以外にも、「S3 バケット」に一意に設定されるURLに対して、「AWS Database Migration Service」等の他のAWSサービスで用意されているAPIを利用してデータを保存する方法もあります。

(2)テーブルを定義する

「Amazon Athena」からのSQLクエリのために、テーブル定義が必要です。デフォルトでは、「AWS Glue Data Catalog」上のテーブル定義を使用します。 「AWS Glue Data Catalog」というのは、「Apache Hive Metastore」というOSS と互換性のある、メタデータを管理するためのリポジトリです。 「AWS Glue Data Catalog」にテーブル定義を作成する方法は、次ぎの三通りです。 ①Athena DDL ②AWS Glue Catalog API ③AWS Glue Crawler 例えば、「Athena DDL」での記述例は、以下のとおりです。

CREATE EXTERNAL TABLE IF NOT EXISTS action_log (
    user_id string,
    action_category string,
    action_detail string
)
PARTITIONED BY(year int, month int)  // パーティション定義
STORED AS PARQUET   // データ形式
LOCATION 's3://athena-examples/action-log/’   // データの場所
TBLPROPERTIES('PARQUET.COMPRESS'='SNAPPY'); // 圧縮形式
「CREATE」といった標準的なテーブル定義をするクエリの後に、「パーティション定義」「データ形式」「データの場所」「圧縮形式」等を指定していきます。

(3)SQLクエリを実行する

「標準ANSI SQL」に準拠したクエリを実行できます。WITH句、JOIN等にも対応しています。 具体的なSQLクエリの例をみてみましょう。 <SQLクエリの例>

SELECT
    col1, col2, COUNT(col3), SUM(col3)
FROM
    table1
    INNER JOIN table2
    ON table1.id = table2.id
WHERE
    table1.id = table2.id
    AND col4 = 1
    AND col5 = “ok”
GROUP BY
  col1, col2
SQLクエリの実行結果は、指定した「S3 バケット」に自動的に保存されます。

(利用例1)BIツールと連携した簡易なデータ分析

基本的な「Amazon Athena」を利用したデータ分析方法を説明します。 データ分析の主な流れとしては、「Amazon S3」にCSVファイルをアップロードした後に「Amazon Athena」からSQLクエリを実行し、取得した結果データをBIツールに連携します。 以下のような手順でデータ分析を進めることができます。 (1)「Amazon S3」 にデータ(CSV形式)をアップロードする (2)アップロードしたデータに対して「テーブル定義」する ※「テーブル定義」するのは、CSV形式等に整形したデータのみが対象となるため (3)「Amazon Athena」からSQLクエリを実行し、結果データを取得する (4)BI ツールに分析結果データを連携して「可視化」する

(利用例2)AWSサービス上の各種ログのデータ分析

さまざまなAWS サービスが出力するログを「Amazon S3」に集めることが可能です。 S3に集積したログに対して、「Amazon Athena」からSQLクエリを実行してデータ分析をします。ログを取得できるAWSサービスは以下のとおりです。 <ログ取得対象となるAWSサービス例> Elastic Load Balancing(ELB) Amazon CloudFront AWS CloudTrail 等

「Amazon Athena」における「暗号化」

「Amazon Athena」は、「Amazon S3」に保存してある分析用データが暗号化されていてもSQLクエリを実行することが可能です。またクエリの実行結果を暗号化してS3に保存することもできます。 「Amazon Athena」と「Amazon S3」との間でデータ転送する際にも、「Transport Layer Security (TLS)」で暗号化することも可能です。

SQLクエリのパフォーマンス向上について

「Amazon Athena」にてSQLクエリのパフォーマンスを向上させるためのポイントを抑えておきましょう。 (1)スキャンデータ量を減らす SQLクエリの処理速度を上げるには、クエリ結果を集計するために必要なデータのスキャン量そのものを減らすのが効果的です。例えば、データの圧縮やデータのパーティショニング(ファイルの配置方法の最適化)等が考えられます。 (2)分析対象のファイルを一定サイズ以上にする ファイル数が多すぎるとファイル操作の処理負荷(いわゆる「オーバーヘッド」)が増大するので、128MB 以上のデータサイズのファイルにできるだけまとめるようにします。 (3)分析対象のファイルを分割可能な形式とする 「Amazon Athena」は並列処理を行うため、ファイルを分割可能な形式としておきます。つまり、CSV形式のデータのように、全体を先頭から順番に処理するだけでなく、途中から処理することもできるデータ形式が望ましいです。

「Amazon Athena」を活用したビジネス戦略

これまで述べてきた通り、「Amazon Athena」をうまく利用することで、低コストで高速なデータ分析が可能です。 高価なBIツールの導入が不要となり、初期導入費用も極めて低減に抑えられるので、スモールスタートでデータ分析のプラットフォーム構築に挑戦してみてはいかがでしょうか。]]>

ITエンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】