データ処理に挑戦する:Amazon Athenaクエリ実行の手引き

はじめに

私の興味分野の多くはアプリケーション開発なのですが、ちょっと幅を持たせるために今回Amazon Athenaを触ってみることにします。

まずは適当なデータに対して簡単に検索を実施してみることまでをやります。

前提知識の取得

前提知識を取得するためにいわゆるBlack BeltにてAthenaの資料を参照します。

aws.amazon.com

この記事を書いている時点で、Amazon Athenaの資料は2つありました。Amazon Athena SQL編をみると良いかなと思います。

データの準備

e-Statという日本の統計が閲覧できる政府統計ポータルサイトがあります。

www.e-stat.go.jp

上記サイトに男女別人口のデータがCSV形式でダウンロードできるのでそれを利用します。

ダウンロードできるCSVファイルのエンコードはShift JISなので適当なエディタでUTF-8に変換しておきます。また、ヘッダの日本語名も適当な英字に修正しておきます。

上記の編集作業を実施したら、S3にアップロードしておきます。

Athenaを使う準備をする

Athenaを使うためには、いろいろと準備が必要となります。まずはクエリの結果などを保存するS3の場所を指定します。

適当なバケットの適当なパスを指定すればよさそうです。

次にデータベースを作成します。以下のSQL文を実行します。

CREATE DATABASE mydb

これを実行するとmydbというデータベースとdefaultというデータベースが参照できるようになりました。

次にテーブルを作成します。今回は結果として以下のようなテーブルを作成しました。

これが一発で作成できるわけもなく、コンソール上にある「作成」ボタンから「S3バケットデータ」を選択して必要な項目を入力します。

テーブルの作成において、CSVファイルを読み込ませるには「データ形式」の「テーブルタイプ」に「Apache Hive」を指定し、「ファイル形式」として「CSV」を選択します。

あとはひたすらカラムの定義を実施します。AWSのドキュメントとして以下があるので、それをもとに設定します。

docs.aws.amazon.com

クエリの実行

ここまでできてようやくクエリを実行できます。以下のSQLを実行します。

結果を得られました。

考察

1MBにも満たない小さなデータに対してAthenaを使った処理を実施してみました。思いのほか準備が大変です。特にテーブル作成にはかなり面倒です。CSVデータを読んでいい感じに作成してくれたらいいのにと思ったりもしたのですが、はてさて。