こんにちは。SCSK池宮です。
今さらながら、先日Athenaデビューしました。
初心者にも非常に扱いやすいサービスですが、私と同じように「いざコンソールに入るとどこから始めていいか…」と悩んでしまう方向けに基本操作をまとめてみました。
お役に立ちましたら幸いです。
Amazon Athenaとは
Amazon Athenaとは、S3上のデータに対し、サーバレスでクエリを行うことができるサービスです。
サーバレスのため事前にインスタンスやクラスターを用意する必要がなく、”使いたい時”に”使いたい分”だけクエリを実行できます。
S3に対しクエリが実行できるサービスというと、Redshift SpectrumやS3 Selectを思い浮かべる方も多いのではないでしょうか?
この2つのサービスとの違いについて、以下のようにまとめてみました。
Amazon Athena | Redshift Spectrum | S3 Select | |
概要 | サーバレスのクエリサービス | RedshiftからS3データに直接クエリできるサービス | S3からデータ抽出するサービス |
ユースケース | S3に置かれたデータに対し分析や複雑なクエリを行う。 | S3に置かれたデータ更新などをクラスター外で行う。
高度な分析を行う。 |
S3に置かれたデータを効率的に抽出して他の処理に渡す。 |
メリット | サーバレスで利用することができる。 | 既存Redshiftクラスターの負荷分散を行うことができる。 | 安価に利用できる。 |
コスト | 5.00USD/TB
(クエリごとの検索対象) |
USD 5.00/TB
(クエリごとの検索対象) ※Redshift自体の料金は |
-(新規受付終了) |
クエリできるフォーマット | parquet、orc、json、csv | Parquet、ORC、RCFile
TextFile、SequenceFile、RegexSerde、OpenCSV、AVRO、Ion、JSON |
-(新規受付終了) |
Athenaでは大規模データに対しても高速なクエリが可能、かつS3はスケーラブルなオブジェクトストレージである、ということから
Athena+S3の構成では、ストレージとコンピュート(クエリ実行)部分がそれぞれ独立したスケーラブルな仕組みになっています。
(「クエリでスキャンしたデータに対して従量課金」という特徴等もそうですが、AthenaはGoogle CloudのBigQueryの考え方に近い印象を受けました)
Athenaの操作方法
AthenaはS3上のデータにクエリできるサービスですが
クエリエディタでリアルタイムにクエリを実行するために、テーブル定義を行う必要があります。
今回は以下のようなCSVファイルをS3に置き、Athenaでデータを見ていこうと思います。
ID | Name | Price |
101 | いちご | 500 |
102 | もも | 300 |
103 | りんご | 100 |
104 | ぶどう | 200 |
201 | かぼちゃ | 150 |
202 | さつまいも | 200 |
AWSコンソールからAthenaにアクセス
コンソールの「分析」からAthenaを選択します。
「クエリエディタを起動」をクリックします。
テーブルを作成してみる
「テーブルとビュー」をクリックし、「S3バケットデータ」を選択します。
「テーブル名」で作成するテーブル名を入力し、テーブルを管理するデータベースを選択します(今回は既存のデータベースにテーブルを作成します)。
「データ形式」と「列の詳細」を選択します。今回は以下のように設定しました。
データ形式
テーブルタイプ | Apache Hive |
ファイル形式 | CSV |
列の詳細
列名 | 列のタイプ |
id | int |
name | string |
price | int |
「テーブルクエリをプレビュー」を見ると、設定したテーブルを作成するためのクエリが自動で作成されています。一番下の「テーブルを作成」をクリックします。
先ほどのクエリが実行され、テーブルが作成されました。
これでテーブル作成は完了です!
クエリを実行してみる
早速、作成したテーブルにクエリを投げてみます!
select * from test_ikemiya.test_ikemiya_20241212
結果が取得できました!(Athenaはクエリデータ量に応じて課金が発生するため、”select *”を行う場合は十分注意して実行してください)
今回は基本中の基本操作を行いました。
データベースを構築することなく使用できるAthenaはアドホックな分析に向いています。
データ分析には欠かせないサービスだと思いますので、積極的に利用していきたいと思います!
最後までお読みいただきありがとうございました。